(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 
on_error is documented in the Middleware trait declaration.