Optimise datatypes with one constructor and one argument
No need to pack them up (because we're strict!) so just treat them as a
newtype would be in Haskell.

No need now to treat prim__IO/prim_io_bind specially in the compiler as the
cosntructor is automatically discarded by this optimisation.
More minor impl-paper edits and typo fixes