Working Jasmine unit tests and test coverage

Includes some directory restructuring
Reorganizes widgets, cleans up dependencies

Reduces chance for dependency errors, and makes relationship between
widgets clearer.
Also switch to using “client/“ prefix consistently.
Move ModelPage constants into the model.