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
base/complex.jl: show Complex{Bool}s as e.g. `Complex(true,false)`.
base/complex.jl: additional incidental cleanup and simplifications.
base/bool.jl: false * -2.0 => -0.0, false * 2.0 => 0.0
Merge pull request #5468 from JuliaLang/sk/no-imaginary

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