Currently, none of the Data instances in Data.Data are derived,
which has resulted in hundreds of lines of laboriously hand-written Data
instances. This cleans it up by using DeriveDataTypeable to derive all of
the boring instances.
Note that previously, tcTopSrcDecls in TcRnDriver was typechecking the
variables generated in deriving statements before other top-level variables,
which causes an error when DeriveDataTypeable is used in Data.Data, since
the deriving-generated variable definitions refer to top-level definitions
in Data.Data itself. To fix this, the order in which these two groups are
typechecked was reversed.