Re-land: Execute afterPrepareSurfacesRunnables after committing...

... the transaction

Some of the runnables will assume the transcation has been committed by
the surface flinger before getting run. For example, the leashes of
insets need to be setup before dispatching to the client. If the order
is not ensured, the transaction sent from the client might be executed
earlier than the one sent from system server which might override the
state of the leash unexpectedly.

This CL executes the runnables when the transaction has been committed.

Fix: 298018626
Fix: 356783416
Flag: EXEMPT bugfix
Test: InsetsPolicyTest InsetsStateControllerTest
      ImeInsetsSourceProviderTest CtsWindowManagerDeviceInsets
      InputMethodStatsTest KeyboardVisibilityControlTest
      MultiDisplayImeTests
Change-Id: I0ee18b75a657eba658561f6f4ace07c59bec64ae
10 files changed