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
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
Merge pull request #1574 from WalterBright/b42

some more dt simplification