Allow deriving Generic1
This completes the support for generic programming introduced in GHC 7.2. Generic1 allows defining generic functions that operate on type containers, such as `fmap`, for instance. Along the way we have fixed #5936 and #5939, allowing deriving Generic/Generic1 for data families, and disallowing deriving Generic/Generic1 for instantiated types. Most of this patch is Nicolas Frisby's work.
Showing with 521 additions and 169 deletions