Do type refinement in TcIface
This commit fixes a bug in 6.4.1 and the HEAD. Consider this code,
recorded **in an interface file**
\(x::a) -> case y of
MkT -> case x of { True -> ... }
(where MkT forces a=Bool)
In the "case x" we need to know x's type, because we use that
to find which module to look for "True" in. x's type comes from
the envt, so we must refine the envt.
The alternative would be to record more info with an IfaceCase,
but that would change the interface file format.
(This stuff will go away when we have proper coercions.)