Hierarchical Router

having a hierarchical router is very useful in cases where we have
sub-shells with dedicated menus, like knockout sample itself. the sample
is not such that complex to need such a router, but in more advanced
scenarios it's really helpful.

i have moved loadUrl logic from history to router. now sole
responsibility of history is to tell whenever the url changes. router
itself must handle urls. now we can have different routers. there's a
default router like before, but a create method is provided for
creations of child routers.
history tells url changes only to default (root) router, each router
notifies it's children if there's any.