Make methods on the router overridable

There are a load of functions in the routing module that are hidden by being in a closure. This is a massive pain when extending the router, which I am doing to add query params. [It is much better to make these instance methods rather than one off functions.](http://sidekicksrc.com/post/closures-for-classmodule-privacy-considered-harmful/)

Along with making the router more extensible, I actually think this is better code, as this gets rid of a load of weird `router.router.foo` calls all over the place. Merging this will allow libraries such as [ember-query](http://github.com/alexspeller/ember-query) and [ember-query-params](http://github.com/eltehupkes/ember-query-params) to be developed [much less painfully](https://github.com/alexspeller/ember-query/blob/master/ember-query.coffee#L83)