Yet more refactoring in overlapping type-family instances

This patch mainly introduces TcValidity.checkConsistendFamInst,
and uses it when typechecking type-family instances, *including*
default instances.

I find I can't remember why I began this particular saga, but
it's a modest improvement I think.
Merge branch 'master' of http://darcs.haskell.org/ghc

Conflicts:
	compiler/typecheck/TcInstDcls.lhs
A bit more tidying up

This is really just a completion of bcbfdd03.
Merge branch 'master' of http://darcs.haskell.org/ghc