Add support for `route({})` to Router for routing fully-processed routes

This adds support to Router to accept fully-processed route objects.

This is useful when passing one router's routes to another router, and for accepting route config objects generated by the server and applying them to a `Y.Router` instance on the client. See #1067

This also adds the `Y.Lang.isRegExp()` method for determining whether a value is a regular expression. There were three places in Router where values are checked to see if they are regexps, this formalizes a helper method to do this, implemented in a robust/standard way.

### Todos

- [x] Add unit tests (currently no regressions)
- [ ] Update API docs
- [ ] Update user guide
- [ ] Add HISTORY.md entry