** Improved the support for complex numbers; Added the Number.i(arg) method which returns arg*i (example: 3.i)
** Now, Complex.new() can take complex numbers as parameters to create another complex number; (Complex(x, y) == Complex(x.real, y.imaginary))
 - Also, Complex.new() now supports Rat numbers (they are converted to floats)
** Implemented Number.new_rat() method which returns a Math::BigRat rational-number;
** Added the Number.c() alias for Number.complex() to create complex numbers; (x.c)