core: add support for new path param definitions

When defining a path pattern, you can now:

- use curly braces to delimit the parameter name. eg "/user/{name}"
- use a custom regex to match the path parameter. eg "/user/{name:[A-Z]{1,3}}
- use column based notation, like the one used in AngularJS resources. eg "/user/:name"