Refactored to handle very large studies

To handle very large Nexson documents, we streamline in several ways:

- Remove most Knockout observables in favor of simple JS values 
- Numerous "ticklers" are added to restore updates to the UI and calcuations
- Complete viewModel is passed as request body in save (PUT) operations
- Much faster filter functions, esp. for large otu and node lists
- Fast "lookups" for common element retrieval operations (by ID)