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
Beyond detecting that a reverted change has been made, the hard coded difference checker is to not war for unsaved changes if all that has happened is a deleted track.  I would prefer to make this code simpler, but there are actual behavioral decisions we'd need to allow that.  Worth discussing in person.