New methods added to class GaussianRational as per HW6, Problem 1 directions

Added new methods to GaussianRational as per HW6, Problem 1.
Fixed compile error in method __crazy__ resulting from syntax error in use
of unescaped single quote ('). Modified __init__ method to allow for default
value of "None" if no arguments are passed on instantiation of the object.

Regarding Problem 1 requirements, I've added the so-called "rich comparison"
methods for corresponding operator symbols. Description of methods added:

- x<y calls x.__lt__(y)
- x<=y calls x.__le__(y)
- x==y calls x.__eq__(y)
- x!=y and x<>y call x.__ne__(y)
- x>y calls x.__gt__(y)
- x>=y calls x.__ge__(y)

Comparison is done by splitting both complex numbers into their real and
imaginary parts, then comparing the corresponding parts as sperate rational
numbers. Returned value is a boolean.