Use more modern principles of class inheritance to make it less messy to override specific bits of generic functionality in processor-specific forms and variants.
Additionally, we should be able to cleanly implement variants that need code to run before and after different parts of the core code as in T322793