No more ImaginaryUnit: `const im = Complex(false,true)`.

This change requires giving multiplition by Bools special behavior. Approximately, `true * x = x` and `false * x = zero(x)`, but a bit complicated for the sake of promotion, the only non-trivial example of which is `Bool * MathConst`, which is promoted to Float64.

Idea originally due to @GunnarFarneback:

- https://groups.google.com/forum/#!topic/julia-dev/VkGrqnrAdaY
- https://github.com/JuliaLang/julia/issues/2980
- https://github.com/JuliaLang/julia/issues/3728

Compare against https://github.com/JuliaLang/julia/pull/5313.