Sieve class

A class named sieve and iterator were made to match the implementation of primesieve.org to use in ntheory functions.
Are you sure? I tried the latest master (b759c504b348a674b40c7a651caf34c5aa5ead7d) with this patch:
```
diff --git a/src/tests/ntheory/test_ntheory.cpp b/src/tests/ntheory/test_ntheory
index b0b1560..e6fcfbc 100644
--- a/src/tests/ntheory/test_ntheory.cpp
+++ b/src/tests/ntheory/test_ntheory.cpp
@@ -266,7 +266,7 @@ void test_factor_pollard_rho_method()
 
 void test_sieve()
 {
-    const int MAX=100003;
+    const int MAX=100000000;
     std::vector<unsigned> v;
     auto t1 = std::chrono::high_resolution_clock::now();
     CSymPy::eratosthenes_sieve(MAX, v);
```
and it says: 1.093s. Then I tried this PR (916d0f7455764c6a73e4600f00290819bf2e0d79) with this patch:
```
diff --git a/src/tests/ntheory/test_ntheory.cpp b/src/tests/ntheory/test_ntheory
index bb96dfc..97a7385 100644
--- a/src/tests/ntheory/test_ntheory.cpp
+++ b/src/tests/ntheory/test_ntheory.cpp
@@ -245,7 +245,7 @@ void test_factor_pollard_rho_method()
 
 void test_sieve()
 {
-    const int MAX = 100003;
+    const int MAX = 100000000;
     std::vector<unsigned> v;
     auto t1 = std::chrono::high_resolution_clock::now();
     CSymPy::Sieve::generate_primes(MAX, v);
```
and it says: 1.218s.

In otherwords, things got 11.4% slower.