Refactor the constraint solver
For some time Richard and I have wanted to refactor the constraint solver. Currently every constraint travels down a "pipeline" consisting of
- Canonicalisation
- Interact with the inert set
- Do top level reactions (e.g. instance decls)
This turns out to clumsy, especially for equality constraints. So instead we just want a solver for equalities, a solver for class constraints, and so on. We think that will modularise the code, and make it easier to modify. This ticket tracks progress.