Major changes to routing

* Now uses a special syntax for URLs
* Patterns can match and pass named arguments to methods
* Rules can have extra string arguments passed into a map
  (possibly overridden by named arguments from the URL)
* Updated test to match