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
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
fix Issue 13673 - ICE(backend/cod2.d 5114)
Merge pull request #4112 from MartinNowak/fix12765

Issue 12765 - dmd needs a "--version" option like gdc
refactor - reduce CTFE memory consumption pt 1