Refutability strikes back

Addresses an nasty regression in for-comprehension desugaring (SI-6968) with a reversion, and then claws back some of the lost ground via overdue renovations to the refutability handling in `RefChecks`.

See the commit comments for all the gory details.

We can jettison a little bit more code from `RefChecks` when this is merged to master, it's marked with TODO comments.

Refutation or otherwise by @paulp (any other ideas on how to save `(a, b) <- either.right`?), and by @adriaanm (for my trespass in the pattern matcher.)