Now the client has to explicitly request the inclusion of startup notes.
Also no longer including startup notes or revision lists with every single
serialized Notebook.
from a different window:
* Made controller.notebooks responsible for preventing unmodified notes from being saved, instead
of model.Notebook handling this task.
* Created a revision validator for passing revisions as arguments to exposed methods.
* controller.Notebooks.save_note() now requires a previous_revision parameter, used to determine
whether the note has been modified in the particular window it's being saved from.
* save_note() returns a new previous_revision value, so the client can determine whether a save
has occurred from another window.
* controller.Notebooks.undelete_note() fixed to quietly bail if the note to undelete isn't
actually deleted, which can happen if it was undeleted in another window.
* Editor() now responsible for making revisions list if it doesn't exist
* No longer giving an "undo" message when the user deletes an empty note.
* On the client side, detecting whether the previous_revision as reported by save_note() looks
correct, and if not, alerting the user about the conflict. Also displaying a "compare versions"
button that opens both the current version and the previous version.
* Made sure the trash is not exposed by the read-only notebook view.
* Modified model.User.check_access() to consider read-write access to a
notebook to be sufficient for access to that notebook's trash.
* Modified controller.Users so new users are created with a notebook that
has a trash.
* Changed controller.Notebooks so deleted notes go to the trash (if any).