(feat) Added real error handling through a new Error variant

Error handling is a thing now, and Unwind now distinctly means
"I have handled this request correctly", whereas Error now means
"There is a problem. Abort mission.".

Middleware which want an exit-style function to fire no matter what
should ensure that they implement both exit and on_error.

Fixes #106 
I think the `404` should be included in the wrapping of `Response` (see other PR) instead of coded into this logic. I think this should not be in this PR.