Don't rerun semantic for const template parameters
Fix bug 10217 ICE(root.c) with nested struct.init.tupleof in CTFE

CTFE version of bug 9315, almost exactly the same fix.
If a nested struct has no initialized hidden pointer, set it to null
to match the runtime behaviour.
Fix issue 10198 CTFE struct Multidimensional block assignment

The wrong CTFE behaviour was actually coded into a test in test42.d.
It was clearly wrong because it behaved differently depending on where the
initialization was performed. That test is fixed in this commit.
CTFE: allow const casts of struct literals

This was permitted in const-folding, but not in CTFE until now.
Do all interpreting inside CTFE

instead of in the optimizer
If an error occurs in an ExpInitializer, change it to an error.
Forward referenced const as template value parameter

The problem is that the constness of the variable hasn't
been determined yet, so it will fail CTFE.
Not sure if this is correct (see also bug 10075).
Fix enum member type

When creating a variable from an enum member, the type is known from the value.
CTFE: run semantic on global variables

Only seems to happen with forward-referenced globals
Detect recursive initialization in CTFE const folding

This should actually be detected in the CTFE compilation step.