Subroute navigation

Note that in this new world, we can have ambiguous paths when searching for nested routes like this. For example `findParentPath("/foo/bar/baz")` could match `/foo > /bar/baz`, `/foo/bar > /baz`, `/foo/bar/baz`, etc.

`getRouteByPath` is only used in a few places:
* When fetching a route via the expression helpers: [`route("/foo/bar")`](https://github.com/polymore/more-routing#polymer-helpers--filters), etc.
* [`more-route-switch`](https://github.com/Polymore/more-routing/blob/fefdedf161d933c3237da7f5b6542a828e93a8fe/more-route-switch.html#L93) (which is just stupidly duplicating logic)
* [`more-route-selector`](https://github.com/Polymore/more-routing/blob/5e1c42fe8a029fb456886aceaae77926a29c2f91/more-route-selector.html#L151) (which is also just duplicating logic)

For all those cases, I don't think it makes sense for us to try to guess which parent is correct for the route. If anything, I think we should just return a parent-less route.

I.e. I think `findParentPath` can be completely dropped, and the logic here just becomes: find a route by path relative to an optional parent - or return a new route by path relative to an optional parent