* Finalisation didn't do the right thing for equalities x ~ y, where
x was instantiated, but not zonked and y flexible (need to do y := x)
* During flattening we weren't careful enough when turning wanteds
intermediates into locals
Both bugs showed up in a small example of SPJ:
linear :: HasTrie (Basis v) => (Basis v, v)
linear = basisValue
class HasTrie a where
type family Basis u :: *
basisValue :: (Basis v,v)
basisValue = error "urk"