Update Route matches

Reduced code. Fixed uppercase for params (controller, category).
I think if filters return controller/directory etc they should be responsible for returning in proper case. The only reason we do the case transformation is so that URLs can be lowercase. Application code should be case-sensitive just like everywhere else.

In fact one use for a filter would be to transform a URL to some different casing convention eg `mysql` to `mySQL` rather than `Mysql` so I think we shouldn't mess about with the return.

Also if you are introducing `@todos` in a PR please could you flag in the description so it's clear it's not ready to merge?