Migrate url router to separate module

This adds a model for storing the url's associated state and a subview
switching is now done in a formal View object.

It still needs a lot of cleanup, but it's a start!
Minor function binding change to gps.js

Backbone's event `on()` function has support for specifying a binding,
so we don't need to use `_.bind` there.