Make the RA to save CSRs.
In `finalizeLowering` we copy all callee-saved registers from a physical
register to a virtual one. In all return blocks we copy do the reverse.
This has two effects:
(1) It tells the optimizer that the value of callee-saved registers
has to be preserved
(2) Allows the optimizer to work on CSRs. In particular, we get
shrink-wrapping "for free" - the register allocator will spill /
restore CSRs if needed.