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.
Code cleanups

This cleans up some requires and a few other things that snuck
into the code base. The `params` reader on runner is useless
because the ivar `@params` is never set. Also, the `halt` methods
were passing in the instance of the calling handler, which wasn't
used. Same goes for the backtrace/caller that was being passed.