Feature/new interface integration part5

* Changes editExperiment form to use angular.js to eliminate the large amount of javascript code needed to sync the javascript model of the experiment with the display of the experiment.  Note that pretty much all significant uses of angular are annotated with HTML comments.
* Adds hooks to editExperiment for accepting template data and submitting to the backend
* Adds some basic validation to editExperiment (track weights must be integers)
* Has track weights hidden when uniformRandom option is selected
* Has editExperiment form compatible with experiment creation by way of the template variable `create`
* Improves comparison of experiment to original for determining whether or not unsaved changes have been made
Instead of repeating the above declaration, can this be simplified using something like `JSON.parse(JSON.stringify(obj))`?