Refactor catalog handling and view-models

This is a major change to build a National Map object model for managing the catalog and the "Now Viewing" list.  The object model is built like Knockout view-models, so you can subscribe to change notification on just about anything, and it's trivial to hook up to a user interface.  Traditionally in the MVVM pattern (read MVC, though it's not exactly the same) there would also be a distinct Model layer.  In this refactoring, we've largely considered Leaflet and Cesium to be the Model.  This choice reduced the number of moving parts, at the cost of a little bit of flexibility.

In addition to being just a more sensible architecture, this change should improve National Map's robustness when dealing with unknown/unreliable data sources.