* Fixes GH-785, which reported that `arg(real)` was implemented as `return 0;`
but `arg(complex)` does actual work for complex numbers with
zero imaginary parts.
* `norm` should upgrade to `double` before squaring. The difference
is observable because `double`'s range is vast.
* `conj` and `proj` should return `complex`.
* `conj(real)` should behave exactly like `conj(complex)`, returning
an imaginary part of negative zero. The difference is technically
observable.
* `proj(real)` should behave exactly like `proj(complex)`, mapping
negative infinity to positive infinity.
* Test that float/double/long double aren't "upgraded".
* Tests pass for Clang, emit warnings for MSVC.
Fixes#187.
Add TRANSITION comments for #248 and #249, blocked by compiler bugs.
Add `_Enabled` names. When we don't have `enable_if_t`, this makes the
template parameter's purpose clearer. When we do have `enable_if_t`
but without `= 0`, this makes it somewhat clearer that we haven't
forgotten the default argument (it's simply elsewhere).