Allow primclass and class constraints in primops

In preparation for the primitive class Coercible
Expose more in the TcS monad

in preparation for the Coercible class implementation.
Outputable.isOrAre: "is" or "are" for correct grammar
Expose tcTyConsOfType as Types.tyConsOfType

and add related function tyConsOfTyCon.
Introduce coerce :: Coercible a b -> a -> b

This is the result of the design at
http://ghc.haskell.org/trac/ghc/wiki/NewtypeWrappers

The goal is to be able to convert between, say [First Int] and [Last
Int] with zero run-time overhead. To that end, we introduce a special
two parameter type class Coercible whose instances are created
automatically and on-the fly. This relies on and exploits the recent
addition of roles to core.