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 13468 - Wrong code when comparing class reference with typeof(null)
Merge pull request #4135 from yebblies/issue13468

Issue 13468 - Wrong code when comparing class reference with typeof(null)
Merge pull request #3956 from 9rnsr/fix13120

Issue 13120 - Body of `foreach` over string with transcoding ignores function attributes
Merge pull request #3810 from yebblies/issue5908

Issue 5908 - Optimizer generates wrong value with divide-by-zero.
replace more EXP_xxxx with CTFEExp
Merge pull request #4138 from WalterBright/BreakContinue

replace more EXP_XXXX_INTERPRET with ExpXxxxx