PmCheck: No ConLike instantiation in pmcheck
pmcheck used to call refineToAltCon which would refine the knowledge
we had about a variable by equating it to a ConLike application.
Since we weren't particularly smart about this in the Check module, we
simply freshened the constructors existential and term binders utimately
through a call to mkOneConFull.
But that instantiation is unnecessary for when we match against a
concrete pattern! The pattern will already have fresh binders and field
types. So we don't call refineToAltCon from Check anymore.
Subsequently, we can simplify a couple of call sites and functions in
PmOracle. Also implementing computeCovered becomes viable and we
don't have to live with the hack that was addVarPatVecCt anymore.
A side-effect of not indirectly calling mkOneConFull anymore is that
we don't generate the proper strict argument field constraints anymore.
Instead we now desugar ConPatOuts as if they had bangs on their strict
fields. This implies that PmVar now carries a HsImplBang that we
need to respect by a (somewhat ephemeral) non-void check. We fix #17234 (closed)
in doing so.