fix Issue 12825 - Invalid "duplicated union initialization" error with initialized field in extern(C++) class
fix Issue 5635 - Code inside 'foreach' using opApply cannot modify variable out of its scope in a template function.
fix Issue 6430 - Overloaded auto-return functions each with a nested aggregate of the same name are conflated
fix Issue 8100 - [ICE] with templated subclassing
fix Issue 8392 - DMD sometime fail when using a non static function template within a function template
fix Issue 8499 - ICE on undefined identifier
fix Issue 9708 - inout breaks zero parameter IFTI
fix Issue 12362 - dmd hangs when attempting to use undefined enum
Merge pull request #3646 from 9rnsr/worksforme

Add test cases for worksforme issues with git-head
Merge pull request #3645 from 9rnsr/fix12825

Issue 12825 - Invalid "duplicated union initialization" error with initialized field in extern(C++) class
Delete long-dead 'throws' code
Delete dead functions 'defineRed' and 'nameCollision'
Delete some dead code that predates tls-by-default
Merge pull request #3647 from yebblies/deadthrows

[DDMD] Delete some dead code from the frontend
[refactoring] move protection to Dsymbol

Protection attributes are applicable for most D symbols, defining
it in descendants results in code duplication. Better to keep it in
base by default and process exceptions.
[refactoring] turn PROT into struct and rename it

Makes it possible to easily add additional protection
information and differentiates between protected imports
and actual attribute.
Support 'package(ident)' syntax (parser/AST)

This commit adds capability of parsing and resolving
explicit packagedefined for package protection attribute. Adjusting
acess checks to use it will be done in separate commit.
Fix #2529: package protection + sub-package

Fix relevant issue by allowing to explicitly define
package to bind protection attribute to. Defaults
remain unchanged.