WIP: Don't emit custom TypeErrors that appear as given constraints
GHC currently emits any custom type errors that appear as given constraints. This is frustratingly eager, and is contra its behavior for other crazy given constraints (such as
Int ~ Bool => ()), which will happily work as givens, but complain when wanted.
Instead, this MR will never emit any custom type errors that appear as givens, delaying them until they're wanted.
This fixes #16906.