This allows cmGlobalGeneratorFactory to create more than one type of cmGlobalGenerator in a next step.
This new abstract class allows us move some logic from the cmGlobalGenerator into its own layer in a next step.