[cxx-interop] convert CXXForeignReferenceTypeInitializers into SuppressCXXForeignReferenceTypeInitializers to be an opt-out flag
First steps towards turning ctor of C++ foreign reference types to be callable as Swift Initializers on by default.
rdar://148285972
@swift-ci please smoke test
NOTE: I am addressing rdar://145098078 as well in this patch.
SWIFT_RETURNS_(UN)RETAINED related diagnostics (specially the warning in case of unannotated C++ APIs returning SWIFT_SHARED_REFERENCE types) were not triggering for cases where the return type in the C++ API is not annotated with SWIFT_SHARED_REFERENCE directly but it derives the reference semantics from one of its parent type via C++ inheritance.
We still need to address rdar://148952864 which is a minor bug. Now we also see diagnostics for C++ APIs returning a type which was derived from a SWIFT_IMMORTAL_REFERNECE. The diagnostic does not trigger when return type is SWIFT_IMMORTAL_REFERNECE but only when IMMORTAL_REFERNECE behaviour is inferred from a base type via C++ inheritance.