Remove CodeGen leftovers from the old combiner backend and adapt the API to fit the new backend better.
It's now quite a bit closer to how InstructionSelector works.
- CombinerInfo is now a simple "options" struct.
- Combiner is now the base class of all TableGen'd combiner implementation.
- Many fields have been moved from derived classes into that class.
- It has been refactored to create & own the Observer and Builder.
- tryCombineAll TableGen'd method can now be renamed, which allows targets to implement the actual tryCombineAll call manually and do whatever they want to do before/after it.
Note: CombinerHelper needs to be mutable because none of its methods are const. This can be revisited later.
Depends on D158710