(refactor) Bring the codebase up to date

The code has not been actively patched in ~2 months and both Iron and Rust have changed
quite a bit. This is my first round of refactors and everything appears to be green.
The major differences are the handling of Middleware in Iron. I changed the old
`Middleware` `impl` to one for `BeforeMiddleware`. The rest of the changes are centered
around making sure all tests can run, and are green. I have tried my best to not change any semantics but being human I am sure there are some mistakes, code review much appreciated!