Store layer state changes by layer handle in Transaction objects

Layer state changes are stored in an unordered map with the surface control as the key
and state changes as the value. This causes a few problems when merging the transactions. If
transactions contained state changes from a cloned surface control then it will not be merged.
This will cause ordering issues when the transaction is applied since the changes are stored in
and unordered map.

When parcelling transactions, a new surface control is created from the existing one and this
surfaces the problem more frequently.

Instead we store the layer changes by the layer handle which is consistent across processes.

Test: atest SurfaceFlinger_test
Test: go/wm-smoke

Change-Id: I2e041d70ae24db2c1f26ada003532ad97f667167
7 files changed