Add 'renderErrorWith'.

This allows clients to set their own rendering function to turn `Error`
values into `ByteString`s, for example using JSON instead of plain text.