This moves all of the common work such as splitting up the raw guard
object out of the individual Guard classes. In the process we also
update the signature of the InitByteNoThreads constructor to match the
others.
While the Guard classes already all inherited from the GuardObject
class, we want that to focus on managing reads/writes to the guard byte
(and thus we renamed GuardObject to GuardByte).
This is the 4th 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 D110093