(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 
This is just an impl of the Middleware trait, hence no docs here. chain_error is documented should you need to know the specific behavior of Chains in this case. 

Additionally, on_error has a default no-op implementation found on L103, so only middleware concerned with errors need implement it.