Another error in the router.

Whoops.
Starting to refactor the router parsing.

The route parsing is meta-code, which means I've had to go with
black-box input/output tests as opposed to a normal unit test. It
wouldn't make sense to check the returned function, as this can change
internally without changing its output, plus they'd be really brittle
tests.