Dont allow hand-written Generic instances in Safe Haskell.

While they aren't strictly unsafe, it is a similar situation to
Typeable. There are few instances where a programmer will write their
own instance, and having compiler assurance that the Generic
implementation is correct brings a lot of benefits.
Allow warning if could have been infered safe instead of explicit
Trustworthy label.
Update Safe Haskell typeable test outputs.
Infer safety of modules correctly with new overlapping pragmas.
Add in (disabled for now) test of a Safe Haskell bug.