Parameter constraints

Adds the ability to specify regex constraints for param values on individual routes. Example:

```javascript

var constraints = { id : /^\d+/, action: /^(create|read|update|delete)$/ };
React.renderComponent((
    <Route handler={SiteWrapper}>
        <Route name='posts' handler={PostPage} path='/posts/:id/:action' constraints={constraints} />
        <Route name='404' handler={NotFoundPage} path='*' />
    </Route>
), document.body);

```

In this example, the path `/posts/123/read` will route to `PostPage`, while the paths `/posts/abc/read` and `/posts/123/foobar` will route to `NotFoundPage`.
Line 254 of Route.js defaults constraints to {}, why the `! constraints` check? Also, `constraints === {}` will always be false since comparing to objects is always identity.

This code never runs, not even if somebody sets constraints to something falsey because of the way the default is set up in Route.js.