Better structuring of the "undo/redo pair" for the client performing a
modification

In particular, the client making a modification now undoes its change,
serializes the created redo operation, removes that redo from the
stack and sends the serialized redo to the server. In turn the server
sends the serialized redo to all clients and thus the operation is
performed again.

This way, the client which performs an operation sees a much closer
picture of events to all the other clients. Less differences between
client state is a good thing.