Reorganized TypeLits and related files as a strawman proposal.

This commit breaks TypeLits up into four new files:
- GHC.TypeEq, which contains definitions relating to (:~:)
- GHC.Singletons, which contains all singletons definitions
that are not specific to type-level literals
- GHC.TypeLits.Internals, which is needed to create an "Unsafe"
module
- GHC.TypeLits.Unsafe, which defines unsafeSingNat and unsafeSingSymbol.

These changes are intended purely to provoke discussion, not properly
as a recommendation of what we should do.