fork() once for each CPU and call sieve() from each child process.

Allocate overflow list contiguous with hashtable, and negatively indexed
from the same pointer. i.e. olist[0]=htable[-1], olist[1]=htable[-2], etc.

Preprocess input sieve file and write it as a binary file that can be
mmap()'d into shared memory by multiple sr5sieve processes.

Use a more accurate estimate for the expected number of factors in a range.
Take the expected number of duplicates into account.

Calculate SMALL_HASH_THRESHOLD based on number of sequences in the sieve.

Allow reading of compressed input files.

Add a self test before sieving begins.

The value of POWER_RESIDUE_LCM is actually limited to 2^15 because of the
use of int16_t for the divisor index in setup64(). Use int32_t for divisor
index instead if POWER_RESIDUE_LCM is too large.

Add the checkpoint-on-demand functionality to the Windows build. This
requires figuring out how to send the Windows equivilent of a signal.

For x86, check whether cpuid/rdtsc are available before use.

If the number of subsequences surviving to BSGS is small, and the number of
giant steps large, then do the mulmods for more than one giant step at a
time.

Use different default names for 32-bit and 64-bit cache files. sr2cache32.bin
and sr2cache64.bin say.

Improve the benchmark routines. Benchmark times don't always accurately
reflect actual sieving times, especially when other processes are running.
