Improve TcCanonical.unifyWanted and unifyDerived
Improve TcCanonical.unifyWanted and unifyDerived

When debugging something else I noticed that these functions
were emitting constraints like
   [W] a ~ a
which is plain stupid.  So I fixed it not to do that.  Should
result in fewer constraints getting generated.

mettekou/ghc,sdiehl/ghc,olsner/ghc,shlevy/ghc,sdiehl/ghc,sdiehl/ghc,sdiehl/ghc,ezyang/ghc,ezyang/ghc,ezyang/ghc,mettekou/ghc,mettekou/ghc,olsner/ghc,olsner/ghc,olsner/ghc,mettekou/ghc,sdiehl/ghc,mettekou/ghc,shlevy/ghc,sdiehl/ghc,ezyang/ghc,shlevy/ghc,olsner/ghc,ezyang/ghc,shlevy/ghc,shlevy/ghc,shlevy/ghc,olsner/ghc,sdiehl/ghc,ezyang/ghc,mettekou/ghc,ezyang/ghc,olsner/ghc,shlevy/ghc,mettekou/ghc