Use Void instead of () for 'no errors'.

This is better, since previously it was possible to throw (), which
wasn't the intention. Occasionally this required the use of `error`, for
example when mapping over a Reason_ to extend it to some (Reason e).

The only remaining wart is that the XmlPickler instance requires an
unpickler, but there's not much to be done about that.

Fixes #70.
Rest-types: add Show and FromJSON instances for Void.

The latter always fails, but is needed to parse `Reason Void` in the
generated API clients.
Rest-gen: generate correct Void error types.

Before, we generated `Reason ()` instead.
Rest-types: add a Generic instance for Void.