Since we want GuardByte to focus exclusively on managing reads/writes to
the guard byte, it shouldn't be responsible for co-ordinating with the
InitByte classes. Instead, we let GuardBase co-ordinate between
GuardByte and InitByte.
This design also eliminates the need for the curiously recurring
template pattern, making control flow much easier to follow.
This is the 5th 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 D110097