Move routing out of middelware and into its own sub package. There should be
a handful of router implementations and this should help keep it clean.
merged