Add system to dm.Surface for staging changes

Pushing to the staging state stack causes all transactions
to be stored in a list at the top of the stack. Popping the stack
undoes those transactions and returns them. Applying
moves the transactions down the stack or into the undo stack.

Change-Id: I607d37591eb3e239a59047be0472627d48d267b1
Merge "Add system to dm.Surface for staging changes"