(feat) Implemented Router middleware

We can only ever store one instance of `params::Params`.

Instead of inserting it, can you `find_mut` whatever might be there, and then either `insert` a fresh one or amend the existing one to include what the router has found? This should let multiple routers be used in series without losing parameter data.