Complex Module (Resolves #47)

I've implemented some basic functions:
Stuff yet to be implemented:
- [x]  add
- [x]  sub
- [x] mul
- [x] div
- [ ] pow
- [x] is_zero
- [x] is_one
- [ ] add tests

`compare`/`is_positive`/`is_negative` cannot be implemented as complex numbers cannot be totally ordered

Ah I see. You can internally always call `Complex::from_mpq`, and maybe you can create a function `from_two_nums`, that accept two `Number`s. Then if the user passes Integer, you look into the internal `mpz`, assign it to a temporary `mpq` and call `Complex::from_mpq`. If it passes Rational, you just call `Complex::from_mpq`. Finally, if it passes anything else, you raise an exception.