[RISCV][NFCI] Introduce Base for Pseudo Expansion Passes (#218170)
This introduces a base class for the Pseudo Instruction Expansion Pass
Implementations, which shares the boiler plate that ensures the function
size estimate does not grow during expansion.
This also makes many of those methods `const`, to more clearly
illustrate how the Impl class works - that per-instruction info is
mostly passed as parameters and not stored in the class members.
This is used to simplify all four of the Pseudo Instruction Expansion
passes. Additionally, many static functions in the Atomic Expand pass
are moved onto the Impl class, so they can directly access the subtarget
and instruction info.
Assisted-by: AI