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
Make 'cabal install Cabal' work again.

Restores old behaviour broken in 7fa7d17862e39635012aaf749f9872216e9b9023.
Fixes #1245.
Merge pull request #1246 from 23Skidoo/cabal-install-Cabal

Make 'cabal install Cabal' work again.