CTFE: Add ctfeInterpretForPragmaMsg

pragma(msg) needs to be treated as a special case since it allows
Types and aliases, as well as expressions.
Fix broken test case 7159

The existing test uses a cast from delegate to void*, which is deprecated.
This revised test case still fails on 2.059, but uses a valid cast.
Disable test case for horrific cast in deprecated code

This test case contains a compile-time cast from one function
type to another, which would inevitably cause a segfault at runtime if
called. This seems like an unnecessary feature.
To support this properly would require specific CTFE support. But historically
the compiler has not done much checking of compile-time values, presumably
it's an accident that it was ever accepted.
Disable this test.
Fix error propagation of index expressions

x[_error] should be an error.
Fix error propagation for CondExp
CTFE: fix segfault after ICE in DotVarExp

If an ICE occurs in DotVarExp, it would segfault when trying to dereference
EXP_CANT_INTERPRET.
CTFE: DotTypeExp cannot be interpreted

Generate an ICE if it tries, rather than an incomprehensible error.
CTFE: Don't save local variables in the global constants list

Even if they are immutable local variables (eg, bug 8400)
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.
Allow interpret(Error) as a no-op

Allowing ctfeInterpret to accept ErrorExp as a no-op causes less
clutter in the calling code. Probably, this should be combined into
a single semantic()/resolveProperties/ctfeInterpret() call.
Do all interpreting inside CTFE

instead of in the optimizer
CTFE compile: Count total variable declarations

First step towards CTFE compilation. Walk over all
expressions in the function, searching for VarDeclarations.
Fix error message wording in test suite
Sanity check: Add check for errorexpressions that have slipped through
CTFE: Generate error for shr/ushr/shl out of range
If an error occurs in an ExpInitializer, change it to an error.
Improve error message for static assert

by running optimize first.
Allow creation (but not reading) of unions in CTFE

It's currently possible to create unions in global scope but not in CTFE.
We can't support reading or writing members, but creation is OK.
CTFE: Allow VectorExp as a no-op