Add support for mapping route params to regexps 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. See the following example:

    var router = new Y.Router({
        params: {id: /^\d+$/}
    });

    router.route('/posts/:id', function (req) {
        // This route will only be executed when `id` is a number.
        // `req.params.id` is the result object/captures array from
        // `exec()`-ing the regular expression.
        Y.log('Show post: ' req.params.id[0]);
    });

    router.save('/posts/1'); // => "Show post: 1"

    // This won't log anything because `id` is not a number.
    router.save('/posts/asdf');
Add support for also mapping route params to functions for processing

Now both regexps and functions are supported for route param formatting
and validation.
Normalize NPCG in a regex route's matches to empty strings for undefined

Fixes #1076
Update Router's HISTORY for coercing NPCG `undefined`s to empty strings
Invoke param handler functions with the `this` context of the router
Add API docs for Router params
Update Router's user guide with Router Param docs
Add Router HISTORY entry for route param handlers feature
Build Router
Merge branch 'dev-master' into dev-3.x
Merge branch 'router-params' into dev-3.x

Conflicts:
	src/app/HISTORY.md
Build Router