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.
Fixes Issue 9368 - Final switch on typedef'ed enum is not properly checked
Fixes Issue 8717 - Private and Protected should be accessible from within
same module.
refactor type_enum
remove redundant slist_add()
fix Issue 9410 - Wrong selection for function overload
Merge pull request #1534 from AndrejMitrovic/Fix9368

Issue 9368 - Final switch on typedef'ed enum is not properly checked
Merge pull request #1568 from WalterBright/b40

refactor type_enum
refactor type_struct_class
Merge pull request #1571 from 9rnsr/fix9410

[Regression 2.061] Issue 9410 - Wrong selection for function overload
Merge pull request #1533 from 9rnsr/fix9126

Issue 9174 - regression(2.057) ice(cast.c) with ternary operator and alias this
Merge pull request #1573 from WalterBright/b41

refactor type_struct_class
some more dt simplification
fix Issue 9406 - (Regression: 2.061) Stack overflow from a forward reference error
Fix unnecessary forward reference error.

In DotTemplateInstanceExp, needsTypeInference is used to determine whether the instance is really a function call or not. But the template is yet not actually instantiated, so onemember->toAlias() might fail. In this case, TemplateInstance::toAlias() tried to run its semantic.
Merge pull request #1574 from WalterBright/b42

some more dt simplification
fix Issue 9420 - [2.062alpha] Weird "(null)" output in error message
Merge pull request #1577 from 9rnsr/fix9420

Issue 9420 - [2.062alpha] Weird "(null)" output in error message
Refactoring for the detection mechanism of expression modifiable.