Configure error handling as a block on a service host

This changes error handling to be a block configured on a service
host instead of as a exception handler class. This is a simpler
interface and should be easier to work with. The block is passed
an exception and as much information as possible for the request.
It can then decide to generate it's own response, by returning a
protocol response or an integer/symbol. If a response is not
generated by the configured error block, then Sanford will
generate it's own response.