Implement poly-kinded Typeable

This patch makes the Data.Typeable.Typeable class work with arguments of any
kind. In particular, this removes the Typeable1..7 class hierarchy, greatly
simplyfing the whole Typeable story. Also added is the AutoDeriveTypeable
language extension, which will automatically derive Typeable for all types and
classes declared in that module. Since there is now no good reason to give
handwritten instances of the Typeable class, those are ignored (for backwards
compatibility), and a warning is emitted.

The old, kind-* Typeable class is now called OldTypeable, and lives in the
Data.OldTypeable module. It is deprecated, and should be removed in some future
version of GHC.
Add support for vectors that contain SIMD vectors.

Vectors can now have unfoldings that consist of streams containing SIMD vectors
as elements. There are also new operations for operating on vectors using SIMD
operations.
Add a hack to get rid of duplicate loop counters in mzipwith.
Incorporate prefetching.
Enable loop unrolling and be smarter about prefetching.