Sieve class

A class named sieve and iterator were made to match the implementation of primesieve.org to use in ntheory functions.
If you compare this PR to master, then in master the primes are generated into the array and the array is iterated. In this PR, you use the iterator, which extends the array 12 times (as you say), compared to 1 by generate_primes. You are right about the early exit possibility for small primes.