Add an 'Add' benchmark
Added `Complex` class. Added constructor.

Updated the CMakelist to include complex class.
Added is_canonical() to Complex
Added basic API functions for Complex class

* is_canonical()
* __hash__
* __eq__
* __str__

There are some issues with the __str__ function. Will discuss on
PR
Added functions from_mpq and from_two_rats in Complex
Added `is_zero` and `is_one` for Complex class.
Updated is_a_Number and added addcomp in Complex Module
sieve class
Added `sub`, `mul` to Complex.
Implement decomposition based solve functions for solving Ax = b
Overload << for DenseMatrix class
Updated `__str__` and `from_mpq` to use canonicalized property

Since in canonicalized form, the denominator is stored as positive
this led to simplification in the function logic.
Added virtual functions which cannot be implemented for complex

* compare
* is_positive
* is_negative
Added `add` `sub` `mul` functions for complex.

These are basically wrapper functions which internally call the
addcomp, subcomp, mulcomp by converting into appropriate number
type before.
Added `div` for `Complex` Module
Fix Indentation issues
overload << for MatrixBase class

Now any drived class of `MatrixBase`can have their own printing fucntion
Calculate determinant using bareis method
Added all virtual functions

Can create an object of Complex class. Will add tests now.
CMake: rearrange include order

Now CSymPy include files are first on the include line to gcc. Other libraries
are later. That way, if older version of CSymPy is installed systemwide, it is
not picked up before our own latest header files.

Redundant include lines were removed from subdirectories and rather the
relevant include files were included in the parent directory.

Fixes #244