Add an 'Add' benchmark
sieve class
Added complex `I`.
Updated `is_canonical` for Mul to handle `Complex`
Updated `dict_add_term_new` for `Complex`
implement inverse using fraction free LU decomposition
Implement matrix inverse by LU decomposition
Basic updates for handling complex numbers in `pow`
Enhance gaussian elimination solve and gauss jordan solve

Now both `gaussian_elimination_solve` and `gauss_jordan_solve` can take
a column matrix instead of a single column vector. Previously to solve two
systems, Ax = b_{1} and Ax = b_{2} (b_{1} and b_{2} are column vectors), one
had to call either of the above functions two times. This is inefficient as
for each call, gauss jordan form or row echelon form of A has to be
calculated. Now one can call either of the functions with B = [b_{1}, b_{2}],
saving extra calculations.
Implement matrix inverse using gauss jordan elimination
Basic Complex addition tests
Implement characteristic polynomial
Merge pull request #252 from thilinarmtb/inverse

Implement Matrix inverse
Merge branch 'master' into char_poly

Conflicts:
	src/dense_matrix.cpp
	src/tests/matrix/test_matrix.cpp
Port to gcc 4.9.0

There is an issue with GMP, as described at:

https://gcc.gnu.org/gcc-4.9/porting_to.html

section "Header <cstddef> changes". So we just need to make sure the <cstddef>
is always declared before <gmpxx.h>.

Otherwise it compiles and tests run.
Remove duplicate includes of <gmpxx.h>

It must be included in dict.h in order to use mpz_class in STL containers. The
dict.h is then included in basic.h, so the <gmpxx.h> doesn't need to be
included in any other header fil.
Test sieve iterator
Add a description about `char_poly`
Merge pull request #257 from certik/gcc4.9.0

Port to gcc 4.9.0
Updated dict_add_term_new to handle complex coefficients

Now dict doesn't complex terms with power 1 or -1.
These terms are directly incorporated into the coeff.
Rest additions are dependent functions for the same.