[DDMD] Allow extern(C++) classes

Changes include:

- Removing the error on marking a class `extern(C++)`
- Not reserving space for the monitor pointer
- Not reserving vtbl offset 0 for the classinfo pointer
- Marking the class as non-finalize (calling destructors currently requires classinfo)
- Making casts to/from C++ classes a no-op
- Not calling invariants for C++ classes
- Making `==` a raw pointer comparison