Have an editable model on the scope.

This is based on advice found here:
https://github.com/angular/angular.js/wiki/Understanding-Scopes

Basically, we have two models, the actual data model and the editor's model.
The actual data model is injected.
Any data that can be edited is copied to the editor's model.
If the editing is accepted, the edited data is copied back to the data model so it can be saved.