REQUEST REVIEW -- Refactor/components

Refactored into component classes. The goal of this PR was to make the structure of the application more consistent and understandable. It should be easier to test and add new functionality as a result of the changes.

In particular:
- Added component.js that should be used to create all application components.
- Added app.js and app/play.js which are "glue" components that boot the application. Note that app/play.js is intended to run the sandbox environment for students to play around. Other apps should be added as necessary, such as for exercises, etc.
- Fixed all existing unit tests/specs as a result of the refactoring.

Note: updated the existing test suite as part of the refactoring (http://localhost:8000/jasmine).

@jazahn @bilbe  Can you review and comment on the new structure/design?