DebugInfo: provide the ability to add members to a class after it has been constructed

This is necessary to allow Clang to only emit implicit members when
there is code generated for them, rather than whenever they are ODR
used.
DirectIvarAssignment: Replace vtable'd objects with simple functions.

Avoids unnecessary static constructors.
Add a convenient way to compare GCCVersions without creating temporary objects.

No functionality change.