Use TypeLits in the meta-data encoding of GHC.Generics

The following wiki page contains more information about this:
https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/GenericDeriving#Amoreconservativefirstapproachtothisproblem