Validation and Dynamic Updates of Training Examples

This covers a lot of the dynamic interaction between Rubric changes and Training Examples. I still need to write JavaScript Tests, but this is a lot of code so I wanted to get this up sooner than later. This will cover a number of scenarios.

* Removing a criterion
* Removing an option
* Removing the last option in a criterion
* Adding a criterion
* Adding an option
* Adding the first option in a criterion
* Updating a criterion label
* Updating an option's points or label

This also includes generating criterion and option "names" client-side. This means the validation server-side will always assume that criteria and options have names, and will not try to generate them. 

@wedaly @gradyward 
I don't see `visible` being used anywhere.  Do we need this?  And if so, why not check the DOM directly instead of maintaining a separate instance variable that could get out-of-sync with the DOM?