Reorder middleware so exception handler is first

Making the exception handler the first middleware ensures that all exceptions are rescued. It also greatly simplifies the other middleware since exceptions can simply be raised instead of returned in `env.response` and exceptions don't need to be encoded.

In the process, I was able to clean up the service dispatcher since it can now safely raise exceptions instead of sending them all back in the response object.

// @localshred @abrandoned