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
Would an alternative to manually checking the experiments be to use `watch` expressions?  Looks like the `watchGroup` directive can be given a number of fields within a scope and have any updates call a single listener.  It probably wouldn't catch the case where a change is made and then reverted, but could be equivalent in most cases (and perhaps easier to modify/maintain).