Forking app flow to shove router calls in a ditch if the client doesn't support pushState

All events that result in a route change or ajax load are wrapped in a check for pushState. If pushState isn't supported, the page will hard reload.

In the event that a router call does occur in this environment, there is a dummy Router with the appropriate methods so that no errors are thrown, but that the call has no effect.