Sieve class

A class named sieve and iterator were made to match the implementation of primesieve.org to use in ntheory functions.
Actually, it is faster when iterating a list of primes. The internal array `_primes` is copied to a vector in `generate_primes` whereas the iterator just gives the primes which makes the iterator a little bit faster.

In the iterator, the sieve is doubled when it is not sufficient whereas `generate_primes` calls itself for `sqrt` of its size. This means that iterator extends the sieve 12 times compared to 4 by `generate_primes` for 1e8
(Although the `primesieve::iterator` is not used, look at the times when using generate_primes vs iterator https://github.com/sympy/csympy/pull/214#issuecomment-47259273 )

Another advantage is that when the number to factor has small primes, they are found quickly without generating all the primes till the limit