This gets rid of the need for multiple inheritance, and better
reflects the design - a Guard isn't an instance of GuardByte or
InitByte, it merely uses them.
This is the 6th of 6 changes to overhaul cxa_guard.
See D108343 for what the final result will be and more details on why
cxa_guard is getting overhauled.
Depends on D110101