A garbage collection proceeds as a sequence of phases. Each
phase is either simple (singular) or complex (an array).
The context an individual phase executes in may be global, mutator,
or collector.
Phases are executed within a stack and all synchronization between
parallel GC threads is managed from within this class.