Add getMatchedRouter() function to Router object.

The Router object will now remember the route it matched so it can be
fetched again without repeating the whole matching process (which can be
costly if there are a lot of routes).

Also added lots of tests for the new functionality.

This is the pull request for issue #37.