This implements the new Typeable solver: when GHC sees Typeable constraints
it solves them on the spot.
The current implementation creates TyCon representations on the spot.
Pro: No overhead at all in code that does not use Typeable
Cons: Code that uses Typeable may create multipe TyCon represntations.
We have discussed an implementation where representations of TyCons are
computed once, in the module, where a datatype is declared. This would
lead to more code being generated: for a promotable datatype we need to
generate 2 + number_of_data_cons type-constructro representations,
and we have to do that for all programs, even ones that do not intend to
I added code to emit warning whenevar deriving Typeable is encountered---
the idea being that this is not needed anymore, and shold be fixed.
Also, we allow instance Typeable T in .hs-boot files, but they result
in a warning, and are ignored. This last one was to avoid breaking exisitng
code, and should become an error, eventually.