fix Issue 10002 - calling std.algorithm.remove is impure
fix Issue 10003 - void* UFCS regression
[Refactoring] Add hasIdentityOpEquals
[Refactoring] Improve __xopEquals implementation

`ref` parameter is same as a pointer in assembler level, so
storing function pointer of `bool __xopEquals(ref const S, ref const S)` to `bool function(const void*, const void*)` is valid.
Improve hasIdentityOpEquals and fix test result of issue 9694.

TypeInfo.equals should throw an Error if the struct doesn't have const objects equality. For example when the struct has only mutable objects equality.
fix Issue 3789 - Structs members that require non-bitwise comparison not correctly compared

Additionally fix interpret3.d tests, because class object equality is currently not yet supported in CTFE.
fix Issue 10037 - Compiler should not generate opEquals method implicitly
Merge pull request #1946 from 9rnsr/fix10003

[REG2.063a] Issue 10003 - void* UFCS regression
Add new Global hook for compiler vendor name.
Merge pull request #1968 from ibuclaw/target4

Add new Global hook for compiler vendor name.
Merge pull request #1972 from 9rnsr/fix3789

Issue 3789 and 10037 - [TDPL] Structs members that require non-bitwise comparison not correctly compared
fix issue 9768 - No line number for wrong foreach type
Merge pull request #1974 from hpohl/9768

9768 - No line number for wrong foreach type
[Refactoring] Remove unused code for AA
fix Issue 10041 - ufcs writeln of associative array
fix Issue 10043 - ICE with __traits(compiles)
Merge pull request #1977 from 9rnsr/fix10043

[REG2.063a] Issue 10043 - ICE with __traits(compiles)
fix Issue 10044 - Wrong di generation for IsExp with TemplateParameterList
Add space after comma

More fix for issue 2273
Add space after `static if`