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.
