misc fixes throughout stored object
skip save if no diffs
store dirtiness on objects rather than StoredObject
factor out load_from_data