Imaginary: implement a pure Imaginary type, let `im = Imaginary(1)`.
test/complex.jl: add tests that `a + b*im === Complex(a,b)` always.
improved hashing of purely imaginary numbers?