Tidy up the interface to lookupInstEnv
This patch changes the interface to lookupInstEnv, so that it
returns a pair (Instance, [Either TyVar Type])
rather than (Inst, TvSubst)
There is no functionality change, but the interface is tidier,
and closer to lookupFamInstEnv (when Manuel has changed that too).
The [Either TyVar Type] gives the type(s) at which the dfun should
be instantiated. We need an Either because it might be instantiated
freely: see Note [InstTypes: instantiating types] in InstEnv.
(This might be a pattern we want to use elsewhere too.)