Refactor the constraint solver pipeline
This MR makes a start on #23070.
The big change is to put the entire type-equality solver into GHC.Tc.Solver.Equality, rather than scattering it over Canonical and Interact. Other changes
-
EqCt
becomes its own data type, a bit likeQCInst
. This is great because EqualCtList is then just[EqCt]
-
New module GHC.Tc.Solver.Dict has come of the class-contraint solver. In due course it will be all. One step at a time.
This MR is intended to have zero change in behaviour: it is a pure refactor. It opens the way to subsequent tidying up, we believe.