Worker/wrapper: Refactor CPR WW to work for nested CPR (#18174)
In another small step towards bringing a manageable variant of Nested CPR into GHC, this patch refactors worker/wrapper to be able to exploit Nested CPR signatures. See the new Note [Worker/wrapper for CPR].
The nested code path is currently not triggered, though, because all signatures that we annotate are still flat. So purely a refactoring. I am very confident that it works, because I ripped it off !1866 (closed) 95% unchanged.
I also added test cases for #18109 (closed) and #18401.