Add support for mapping route params to regexps or functions for processing

It's desirable to both use string-based routes with named params, e.g., `"/posts/:id"`, and assign some processing to route param values, e.g., `id` should be a number.

This adds a feature to Router to support mapping named params to regular expressions or functions. See the following example:

```javascript
var router = new Y.Router({
    params: {
        id      : Number,
        username: /^\w+$/
    }
});

router.route('/posts/:id', function (req) {
    // This route will only be executed when `id` is a number.
    // `req.params.id` is number resulting from passing the string value
    // to the `Number()` constructor.
    Y.log('Show post: ' req.params.id);
});

router.route('/users/:username', function (req) {
    // This route will only be executed when `id` is a number.
    // `req.params.username` is the result object/captures array from
    // `exec()`-ing the regular expression.
    Y.log('Show user:' req.params.username[0]);
});

router.save('/posts/1');     // => "Show post: 1"
router.save('/users/ericf'); // => "Show user: ericf"

// This won't log anything because `id` is not a number, the route is skipped.
router.save('/posts/asdf');

// This won't log anything because `username` is not alpha-number, the route 
// is skipped.
router.save('/users/eric,ryan');
```

### Goals

The main goal for this feature is to enable people to stick with string-based route paths and named `req.params` while adding support for basic param processing/validation.

Currently, when people want to process request parameter values, they either have to add a route callback function, or switch to using regex route paths. Adding another callback/middleware isn't the end of world, but it gets repetitive since it has to be added to every route (or to a common middleware stack). Having to switch to using regex route paths sucks because you lose named request parameters, and those route paths are hard for humans to parse.

### Todos

- [x] Write initial implementation
- [x] Add support for functions
- [x] Write tests which fully cover feature
- [x] Test in all YUI Target Environments
- [x] Fill out API docs
- [x] Update user guide
- [x] Add HISTORY.md entry