v0.4

Extended sieve algorithm. Now we also search for chains where origin a
is:
a = fixedMultiplier * pr# * 2^n
instead of just
a = fixedMultiplier * pr#
The advantage is that when sieving for chains, we need to sieve *2, *4,
*8, *16, *32, ... anyway. Therefore we can reuse the result of the
previous sieve in the next stage as the new base for chains. In other
words, we init the sieve as usual. Scan the multipliers. Then when
finished, we multiply the fixedMultiplier by 2 and only re-sieve the
highest factor of the chain.
In theory this decreases sieve time by 1 / chainlength. In practice the
actual time we save is about 1 / 5 currently due to higher memory
requirement and not perfectly optimized sieving. The downside is that we
often encounter duplicate candidates, but this can be fixed.

Other changes:
I added a fast but wasteful memory allocator for mpz. It reduces
malloc/free time for mpz to nearly zero.