Derive EmailAddress's instances: Data, Typeable, Generic

In a similar spirit than #6 (i.e., being able to embed `EmailAddress` in larger data structures while continuing to have automatic support for `Show` and `Read`), here I automatically derive `Data`, `Typeable` and `Generic` instances for `EmailAddress`, classes upon which many third party libraries rely on. For example:

* `uniplate` can perform generic transformation over any structure with `Data` and `Typeable` instances.

* `cereal` can perform automatic binary serialization and deserialization for any `Generic` instance.

* `distributed-process` can send values across the network as long as they provide a `Typeable` instance.