Fix bug 7209: Stack overflow on circular enum with explicit type

Detect the error in the semantic pass. This slightly changes the error
message for one existing test (it was previously detected inside CTFE)
-- now the *first* circular definition generates the error, which makes
more sense.
Do implicit cast for ExpInitializers inside CTFE

Move the implicit cast inside CTFE, so that we're evaluating the
final value.
Fix float precision in one compile-time test

This test doesn't work if there is floating point round-off error.
Fix bug 9937 CTFE floats don't overflow correctly

This fixes the bug in comment 4 of bug 9937.
Although CTFE floats may use higher precision than is available on the target
machine, it is impossible for that extra precision to survive to runtime.
This commit forces the extra bits to be discarded at the end of CTFE, rather
than in the glue layer. This eliminates the bizarre anomalies in bug 9937 where
a variable has two values at the same time (!) It also opens the way for CTFE
to calculate with much higher precision than is available at runtime.