Sieve class

A class named sieve and iterator were made to match the implementation of primesieve.org to use in ntheory functions.
Much faster! With this patch:
```diff
diff --git a/src/ntheory.cpp b/src/ntheory.cpp
index 07ba087..0016436 100644
--- a/src/ntheory.cpp
+++ b/src/ntheory.cpp
@@ -518,6 +518,7 @@ void Sieve::_extend(unsigned limit)
 
 void Sieve::generate_primes(unsigned limit, std::vector<unsigned> &primes)
 {
+    for(unsigned i=100;i<=limit;i*=1.2) _extend(i);
     _extend(limit);
     std::vector<unsigned>::iterator it = std::upper_bound (_primes.begin(), _pr
     //find the first position greater than limit and reserve space for the prim
```
it now takes 0.672s.

I don't understand why it would be faster, but it is faster.