Fix Issue 5908 - Optimizer generates wrong value with divide-by-zero.

Reinstate optimizer error for integer division by zero
[Refactoring] simplify the code to inherit @safe attribute
[Refactoring] simplify the code in checkPurity
fix 9148 - Issue 9148 - 'pure' is broken
Remove hack for issue 10981
fix Issue 9620 - Error messages of failed pure enforcement
fix Issue 12912 - Lambda function is incorrectly inferred as impure if it uses member field or function
fix Issue 12908 - [AA] `foreach` by keys and values over associative array in pure function allow impure function calls
fix Issue 13120 - Body of `foreach` over string with transcoding ignores function attributes
fix Issue 3449 - const and invariant struct members do not behave according to spec
AA tests harmonization with new AA implementation
fix Issue 13095 - Someteims  destructor is called if constructor throws
fix Issue 13613 - Pragma msg affects data structure layout
Merge pull request #4106 from 9rnsr/fix13613

Issue 13613 - Pragma msg affects data structure layout
Store config filename in global object.
Show config file if object.d can't be found.

To help troubleshoot problems caused by stray copies of dmd.conf
(see bugzilla issue 4567).
Print config file being used in usage().
Fix Issue 13679 - foreach_reverse is allowed for AAs
Merge pull request #4108 from quickfur/issue4567

Issue 4567: display dmd.conf path being used if object.d can't be found
Issue 12765 - dmd needs a "--version" option like gdc

- move printing of compiler logo into separate function

- add --version switch to only print version and copyright