Studio-editing JavaScript Refactor

An attempt to make our JavaScript more testable.

1) Encapsulate XBlock server interactions in `OpenAssessment.Server`.  Uses [JQuery's deferred object](http://api.jquery.com/category/deferred-object/) pattern to allow easy stubbing of the server.
2) Encapsulate DOM interactions in `OpenAssessment.StudioUI`.
3) Add JS tests for `OpenAssessment.Server` and `OpenAssessment.StudioUI`.    Use dependency injection to stub server calls.
4) `./manage.py` runs both Python and JavaScript tests; it also reports JS coverage to the console. 

This approach could be useful for student-facing JS as well.  For this reason, I've included methods in `OpenAssessment.Server` for rendering views, sending submissions, and sending assessments.