Do implicit cast for ExpInitializers inside CTFE

When a manifest constant is initialized using CTFE, the initializer may perform an implicit cast of the CTFE return value, and then run CTFE again. This commit moves the implicit cast into the initial CTFE whenever possible. This means that CTFE immediately calculates the final value of the expression.

One beneficial side-effect of this is that it allows implicit conversion of unique CTFE values to immutable, so one test moves from ``fails_compilation`` to ``compiles``.