Reduce the size of set and map ops, and allow only one op per update.

As far as the server-side is concerned, only one operation can be
performed at a time. This coalesces the set "add" and "remove"
operations into a single "update" operation, containing both types of
member modifications. The same treatment was applied to maps, creating
a triple of adds, removes, and field updates.