s/decode/decoded_content/ to match HTTP::Message
add on_error handling and structured exceptions

We add a new on_error handler that can be set to handle exceptions when
we see them. The handler is passed a structured exception object (that
does Throwable) but defaults to dying with just the error message.