The function FunDeps.grow was not doing the right thing when type equality
constraints were involved. That wasn't really its fault: its input was
being filtered by fdPredsOfInsts.
To fix this I did a bit of refactoring, so that the (revolting) fdPredsOfInsts
is now less important (maybe we can get rid of it in due course). The 'grow'
function moves from FunDeps to
Inst.growInstsTyVars
TcMTType.growThetaTyVars
TcMType.growTyVars
The main comments are with the first of these, in
Note [Growing the tau-tvs using constraints] in Inst.
Push to the branch if conflict free.