Rename TypeRep.Prec to TypeRep.TyPrec
Use mkTcEqPred rather than mkEqPred

This was mostly done in an earlier commit, but I missed these two
Fix inverted gadt-syntax flag for data families
Do pretty-printing of TyThings via IfaceDecl (Trac #7730)

All the initial work on this was done fy 'archblob' (fcsernik@gmail.com);
thank you!

I reviewed the patch, started some tidying, up and then ended up in a huge
swamp of changes, not all of which I can remember now.  But:

* To suppress kind arguments when we have -fno-print-explicit-kinds,
    - IfaceTyConApp argument types are in a tagged list IfaceTcArgs

* To allow overloaded types to be printed with =>, add IfaceDFunTy to IfaceType.

* When printing data/type family instances for the user, I've made them
  print out an informative RHS, which is a new feature. Thus
        ghci> info T
        data family T a
        data instance T Int = T1 Int Int
        data instance T Bool = T2

* In implementation terms, pprIfaceDecl has just one "context" argument,
  of type IfaceSyn.ShowSub, which says
       - How to print the binders of the decl
         see note [Printing IfaceDecl binders] in IfaceSyn
       - Which sub-comoponents (eg constructors) to print

* Moved FastStringEnv from RnEnv to OccName

It all took a ridiculously long time to do.  But it's done!
Use IfLclName instead of OccName in IfaceEqSpec

The type variables in the IfaceEqSpec of a data constructor are really
ordinarly *occurrences*, so they should be IfLclNames just like any
other type variable occurence.