Add `Data` instance for `Data.Version`

See also

  http://permalink.gmane.org/gmane.comp.lang.haskell.libraries/20269

Patch from Edward Kmett (essentially.)

Authored-by: Edward Kmett <ekmett@gmail.com>
Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
byteSwap16/32: Narrow the result to 16/32 bits

According to primops.txt.pp, the BSwap16Op and BSwap32Op primops
leave the higher bytes of their results undefined. We must clear
those higher bytes here before storing the result in a Word16/32.

Signed-off-by: Austin Seipp <austin@well-typed.com>
Follow changes in comparison primops (see #6135)

We export isTrue# and isFalse# from GHC.Exts to allow
easy conversion between result of comparison (which is
an Int#) and Bool which can be inspected by if expression
or a guard.