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.
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
Added all virtual functions

Can create an object of Complex class. Will add tests now.
Added basic printing tests. Updated __str__ for Complex
Added function from_two_nums for complex. Added minor tests.
Added tests for complex addition, Shifted printing tests.

Shifted the tests for pretty printing into the printing module.
Added tests for complex addition, in which the final result is
either int or rational or complex.
Added tests for complex subtraction
Merge branch 'master' into complex

Builds were failing in Shippable, so merged master.
Fixed conflicts in:
	src/tests/basic/test_basic.cpp
	src/tests/printing/test_printing.cpp
Added tests for complex multiplication
Fixed bugs in complex division. Added tests.