Added complex `I`.
Updated `is_canonical` for Mul to handle `Complex`
Updated `dict_add_term_new` for `Complex`
Basic updates for handling complex numbers in `pow`
Basic Complex addition tests
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.
Added tests for complex multiplication and subtraction

Tests have been added to check if the complex is multiplied with
coeff instead of adding to dict when its power is 1.
Added tests for complex div. Fixed some issues.

* Fixed printing for mul in case of complex coef.
* Fixed the else condition for add, mul, div, sub in Rational.
* Added tests for complex division
Updated complex printing

In case the real or the imaginary part is zero, it is not printed
Added tests.
Updated printing of complex power. Added tests.
Added tests for complex power
Removed TODO comments
Add Python wrappers for complex numbers

Test SymPy <-> CSymPy conversion as well.
Use csympy symbols in the tests
Added suggestions mentioned in PR

The following changes have been made:
* Fixed printing when imaginary part is 1 or -1
* Fixed docstring
* Added missing insert and erase statements
* Pretty Printing of negative numbers: #259
* Added tests
Added modulo function
Updated `pow`, Imaginary no. raised to integral power are expanded
Patch to fix travis failures
`(-1)^(1/2)` is returned as `I`.
Extract `I` when negative number raised to power `1/2`

Adding to the previous commit.
Now expressions like: (-3)^(1/2) are simplified as: I*3^(1/2)