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.
Don't save local variables in the global constants list

Even if they are immutable global variables (eg, bug 8400)