wayland: Desynchronize transactions of the same client + Fix TransactionDmaBufLocker lifetime
At the moment transactions from the same client are applied in the commit order even if the trasactions affect unrelated surfaces.
This patch desynchronizes transactions affecting unrelated surfaces.
With this, if a client updates two surfaces (as an example, Firefox with two windows) and one of its surfaces takes longer to render, the other surface is not going to be slowed down.
Another nice thing is that it removes client from Transaction, which might be potentially useful to the Workspace for coordinated resize or something.
If the transaction entry is removed, the graphics buffer reference will be dropped and it's possible that the TransactionDmaBufLocker is going to be destroyed as well.
If that happens, the transaction may remain in the locked state.