Split out Generics support into a separate module
Drop the Haskell 98 branding