Add Data and Typeable instances for many types exported by Cabal.

Note: this adds an orphan Data instance for Data.Version. A fix has been
proposed upstream.
Merge pull request #1243 from davidlazar/master

Data/Typeable instances