Allow extern(C++) classes
Do not emit classinfo pointer as first entry of vtbl for C++ or COM classes
Do a reinterpret cast for any cast to or from a C++ class or interface
Do not compare C++ classes with .object.opEquals
Disable invariant calls for C++ classes
Switch to power of 2 tables in aav.c

Brings in somewhere in area of 1-2% increase in speed as measured by
dmd -unittest -c std\algorithm.d

on Linux x64

This closely follows the original prime sizes by using next pow-2 of primes
and reproducing roughly the same grow factor (=4).

Takes into account that key are aligned pointers to strings
and thus need a fair bit-shake to get a decent distribution.
remove ifdef'ed trace from aav.c
Add fail_compilation test for bug 2962
Adjust insertion target of the instantiated template
Move 4481 test from compilable to runnable in order to check the generated code
fix Issue 10086 - ICE(glue.c) or wrong code on passing variable as template value parameter
fix Issue 10857 - ICE(glue.c,　bugzilla 2962?) or compiles, depending on the files order
Additional fix issue 10758 for inout method of nested aggregate
Fix Issue 10626 - ICE with vector operation

Fix regression by forwarding buildArrayIdent and buildArrayLoop to the base implementation for all other derived expressions.

Add test cases to improve coverage.
improve comments
Fix Issue 10870 - An interface in ddoc output should not be marked as abstract.
Fixes Issue 10869 - Ddoc outputted some function modifiers twice.
fix Issue 10836 - 'errors compiling the function' for optimized builds
fix Issue 10394 - opBinaryRight!"in" and tuple
Merge pull request #2490 from WalterBright/comment-elfobj

improve comments