Adjust PiP bounds upon IME visibility change

We are implementing two CUJs:

1. If IME is occluded by PiP, change the PiP bounds
2. If PiP hasn't been interacted with, IME becoming
invisible should return PiP to original bounds.

We are also now caching the movement bounds in PipBoundsState,
which acts a source of truth for this.

We are also implementing a scheduling mechanism in PipTransitionState
waiting for a valid PiP idle state to run a new transition for example.
This is helpful for dealing with trigger paths from outside
PipComponent.

Bug: 352596856
Flag: com.android.wm.shell.enable_pip2_implementation
Test: atest ImeListenerTest
Test: enter PiP and open an IME
Change-Id: I27fa96bddd2181df0957e7d83edd52457c54d6d8
6 files changed