GHC.Core.Unify: Make UM actions one-shot by default

Merged Sebastian Graf requested to merge wip/oneshot-unify into master

See also !3309 (closed), which applies this to all Reader/State-like monads in GHC for compile-time perf improvements. The pattern used here enables something similar to the state-hack, but is applicable to user-defined monads, not just IO.

This MR isolates part of !3426 (merged) to test it in isolation and ultimately rebase !3426 (merged) upon.

Merge request reports