fix Issue 12412. CTFE-able math

Issue:
https://issues.dlang.org/show_bug.cgi?id=12412

Make isNaN, isNormal, isSubnormal, isFinite, isInfinity CTFE-able.
`sgn` function for example uses implicite cast to bool.  It is faster to understand the line of code. When I see `f == 0.0` this really mean 
`f == 0.0 || f == -0.0` so I need to think about that.