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
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
Added divide by zero check in division for Rational
Fix Indentation issues
Added tests for catching exception.

* Added CSYMPY_ERROR
* Added CSYMPY_CHECK_THROW
* Added tests for divide by zero for int and rational
Fixed indendatation in all files.

Due to mismatch editor config, some files which I had commented
earlier had mismatched tabs.
Corrected all those files.
There were some alternate files as well, corrected indentation
in them.
overload << for MatrixBase class

Now any drived class of `MatrixBase`can have their own printing fucntion
Merge pull request #242 from sushant-hiray/fix-indentation

Fixed indentation in all files.
Merge pull request #241 from sushant-hiray/fix-div

Added divide by zero check in division for Rational