Merge pull request #2035 from yebblies/enumfix

[DDMD] Replace uses of `enum XXX` as a type with `XXX`.
Replace expression macro with lines in it
Expand macros in arrayop.c
Expand BinAssignExp macros in expression.h
Expand macros in lexer
Expand macros in mtype
Remove unnamed union with an initializer
Expand macros in traits
Expand macros in parser
Remove macros in lexer.h
Expand macro in interpreter
Implicit conversions and shadowing
0->Loc
unsigned char* -> const char*
Breaks utf8 BOM
Make char unsigned
More implicit conversion errors
Mostly implicit conversions
Stack allocations, implicit conversions
Get rid of volatile_longdouble (do we need this?)
No implicit Object -> void*
No implicit real -> creal
Use memcpy to copy classes, not assignment
No implicit Identifier -> char* conversion