bug-for-bug refactoring of cell/asset model core into buffer model
rename notebook model member notebook -> cells
buffer model (should have been committed a couple back)
random cleanup and comments
checkpointing of cells and assets

so that we know whether to report a change
and not fall afoul of github's "whitespace is erase" policy
cherry-pick improved error handling from feature/server-side-config
simplify change handling and fix whitespace and language bugs

vastly simpler change system where changes are considered a sequence
of imperative commands rather than declarative (not sure if that was
ever correct)

do up all 10 cases of whitespace renaming/erasing/etc, fixes #338
simple, correct (if inelegant) cell language changes, fixes #385
Merge branch 'feature/improve-change-model' into develop