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
Can you add a comment here about this?  I understood why this is here from Kevin, but coming back to it later a comment would be helpful - especially if we decide to refactor the button so that it's enabled if and when there's a value in the name input field.