New interface

This PR attempts to lay the foundation for the user experience in the TreeViewer (and other viewers). The goal is to keep the experience intuitive and simple. 

This also cleans up some architectural issues in the codebase and organizes the app better. There is still a lot of work/thinking that will be needed to complete this process.

Changes:
* New This PR attempts to lay the foundation for the user experience in the TreeViewer (and other viewers). The goal is to keep the experience intuitive and simple. 

This also cleans up some architectural issues in the codebase and organizes the app better. There is still a lot of work/thinking that will be needed to complete this process.

Changes include:
* Stripped the `main` function to include only webpage building objects
* Moved most of `main` into `ViewerApp` object
* Cleaned up `LoaderWidget` Object
* Cleaned up `TreeMap`
* Rewrote most of the `Modal` object to be more useful and stable
* Rewrote the `Options` object as `ViewerOptions` object and made it more stable.
* Simplified the HTML and made initial view bring up the customization modal.
* Simple reorganization of CSS