[PROPOSAL] Merge `deepseq-generics` into `deepseq`

**Formal proposal to `libraries@`: http://permalink.gmane.org/gmane.comp.lang.haskell.libraries/23031**

This also replaces the existing `rnf x = seq x ()` default
implementation with a `Generics`-based `DefaultSignature` `rnf` method
implementation

This requires to drop support for GHCs older than GHC 7.2 to avoid
conditional exports due to lack of `Generics` support
I think this reasoning is wrong, actually.

It makes sense if you consider `Void` in isolation. But uses of `Void` are often such that you need instances for it as a trivial base case where certain constructors have been ruled out. For instance:

```haskell
data Expr a = Var a | Const Int | Add (Expr a) (Expr a) | Mul (Expr a) (Expr a)
```

`Expr Void` is supposed to be a closed expression, with no variables, and lacking a `Void` instance for `NFData` means I can't deepSeq such things.

The same thing happens with serialization. At first you think that you'll never be serializing a `Void`, and want to statically rule that out. But, it's perfectly sensible to want to serialize a closed term, where `Void` is used to rule out some constructors from occurring.

I don't know how important it is to be able to auto-generate the instance for such types, though.