Support for TypeNats
Merge branch 'master' into type-nats

Conflicts:
	base.cabal
Merge branch 'master' into type-nats
Remove all but the basics from the GHC module.

In this way we can work on the programmer library without having to
recompile all libraries.
Change the representation of singletons from Integer to Word.

This is---probably---just temporary.  For details, take a look at
comment on case "EvInteger" in function "dsEvTerm" in "deSugar/DsBinds"
Merge remote-tracking branch 'origin/master' into type-nats
Merge remote-tracking branch 'origin/master' into type-nats
Change extension name to match current GHC head.
Rename GHC.TypeNats to GHC.TypeList, cleanup, add type-level strings.
Merge remote-tracking branch 'origin/master' into type-nats
Merge branch 'master' into type-nats
Merge remote-tracking branch 'origin/master' into type-nats
Add some useful functions for working with type literals.
Merge remote-tracking branch 'origin/master' into type-nats
Fix the type of IsEven
Revert IsEven to the way it was.
change unsafeDupableInterleaveIO from INLINE to NOINLINE (#5943)

See the comment for details.
add test for #5943
Merge remote-tracking branch 'origin/master' into type-nats
Ensure hGetBufSome does not cause potentially blocking reads (#5843)

When there is data in a handle buffer, never fetch more than the
available number of elements, since that can cause a blocking read on
Windows.