Fix for #65 - Implement 'stack of routers'

This is the routing part of the fix. MVC will be updated as well
(attribute routing).

As the graph of routers is traversed, routers add themselves to the
current 'path', which unwinds on a failed path.

This mechanism is opt-in. Whoever adds something needs to remove it as
part of cleanup. If a router in the tree doesn't interact with the
.Routers property, then there are no consequences for those that do.
making these get/private set, and pre-initialized simplifies the model for working with this class, and is consistent with the old system.web code.