Update cache only on success of DS operation

This prevents corruption of the records when the datastore operation
fails.
Fixed field layout, added missing field
Moved to multi-entity storage of shelves

Right now, the ability to use an entity group is about the only advantage,
sadly. Perhaps, in the future, we will be able to do more