fix Issue 10003 - void* UFCS regression
Add new Target hook to retrieve member field alignment.
Remove undefined behavior from test23.

The code tried to load 4 bytes from an 1-3 byte allocation.
LLVM's optimizer actually detects this, marking the entire
result undefined.
[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 ldiv for shared libraries
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 #1969 from WalterBright/fixldiv

fix ldiv for shared libraries
Merge pull request #1967 from ibuclaw/target3

Add new Target hook to retrieve member field alignment.
Merge pull request #1966 from klickverbot/test23-fix

Remove undefined behavior from test23.
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