Expose new Word operation to swap endianness for Word{16,32,64}

Authored-by: Vincent Hanquez <tab@snarc.org>
Signed-off-by: Austin Seipp <aseipp@pobox.com>
Fix #7787

Now the pair is evaluated strictly inside the exception handler.  I
figured this would be less likely to introduce space leaky bugs than
using an irrefutable pattern match.
Add test for #7787
Fix GHC.Enum on 32bit platforms; fixes #8072

Diagnosed by int-e.

MachDeps.h wasn't being included in Enum.lhs, and the old
WORD_SIZE_IN_BITS test didn't fail when WORD_SIZE_IN_BITS isn't
defined. Now we get an error instead.
Fix bug in IO manager when number of capabilities is changed; fixes #8087

Patch from parcs.
Implement "TypeLevelReasoning" proposal at wiki:TypeLevelReasoning

This commit includes a propositional equality (:=:) in Data.Type.Equality,
a Proxy type in Data.Proxy, and has updates to Typeable.

There is an unfortunate number of hs-boot files necessary, but that
seems cleaner than moving Typeable instances around willy-nilly.
Eliminate Equality.hs-boot and Proxy.hs-boot by moving instances
Merge branch 'master' into roles