Remove unused tyConsOfDataCon
Make tyConsOfType return a (NameEnv TyCon) rather than [TyCon]

A little refactoring
Comments and white space only
Give T3064 the right module name (just tidying up)
Switch off lazy flattening (fix Trac #3064)

See Note [Lazy flattening] in TcFlatten.

Lazy flattening was an apparently good idea which actually made
the type inference engine go a LOTS slower in T3064.  So I switched
it off again.
Minor refacoring and trace-message printing
Allow the solved dictionaries to propagate from outside in

See Note [Propagate solved dictionaries] in TcSMonad.  This
can signficantly reduce the number of solver steps.
Wibbles to notes
Refactor the code that prevents recursion among Coercible constraints

The main description is in Note [Preventing recursive dictionaries]
in TcRnTypes, which applies only to Coercible dictionaries.

But it was a bit of a mess:
 - It wasn't applied consistently
 - It was being applied to non-Coercible dictionaries in some places

This patch tidies it up.

This hack will largely go away when Richard starts treating Coercible
constraints more like equalities than like dictionaries.