fix Issue 9790 - Internal error when compiling a invalid variable in template
+opt
+clean
+constfold
Add Type* parameter to Initializer::toExpression
Move some into ExpInitializer::toExpression
Use ExpInitializer::init more

Fixed committed string problem.

enum string s = "test";
auto x = "test"w ~ s;   // error?

In initializing, Expression::castTo should not be used.
So, above code should *always* work.

+clean

+1 for std.range unittest
- Do not delete ei->exp->syntaxCopy
Commit StructLiteralExp type for the member of EnumDeclaration
Commit type in StructLiteralExp::castTo as like StringExp - Phobos test OK
+comment
Small cleanup in VarDeclaration::semantic for local variables (?)
Reduce indentation
Add BlitExp
Remove Type* from Initializer::toExpression