fix Issue 8913 - Wrong code in IfStatement condition Expression

Type cast from `e : T[n]` to `T*` should generate `&e[0]`, not `&e`.
fix Issue 9174 - regression(2.057) ice(cast.c) with ternary operator and alias this

Precedence 'alias this' resolving than integral promotion.
Introduce MODtoChars to avoid code duplication.
Fixes Issue 9368 - Final switch on typedef'ed enum is not properly checked
improve copyprop and rmdeadass for structs
Fix issue 1841 Closure detection fails in nested functions

If an escaping function doesn't use any closure variables, but
calls another nested function which does, it must be marked as
needing a closure. This 'calling a sibling' case was missing.
Fixes Issue 9398 - Print colon instead of question mark for mismatch of ternary operator types.
fix for optimizer changes
fix for optimizer changes 2
Merge pull request #1555 from AndrejMitrovic/Fix9398

Issue 9398 - Print colon for mismatch of ternary operator types
Fixes Issue 8717 - Private and Protected should be accessible from within
same module.
Merge pull request #1553 from WalterBright/b33

improve copyprop and rmdeadass for structs
Fixes Issue 8892 - Better diagnostic for static array assignment.
fix test case
correction to last fix
Merge pull request #1559 from WalterBright/b34

fix Issue 9320 - optimizer should do copy propagation on structs, too
just a little refactoring
just a little refactoring
fix Issue 9409 - [2.062-alpha] Regression with $ inside of expression tuples
Merge pull request #1558 from AndrejMitrovic/Fix8892

Issue 8892 - Better diagnostic for static array assignment