Implement 3-btn-nav fixed rotation

Implement the 3-btn-nav bounds type
fixed rotation transition with the animation.

The flow looks as follows:

1. A direct TRANSIT_PIP or TRANSIT_OPEN is detected
with a fixed rotation change providing us with endFixedRotation hint.
2. Shell runs the fixed rotation animation in the original display
orientation.
3. Shell updates the relevant internal state to represent that in final
orientation
4. Core requests a CHANGE transition with a display change that we
listen to in PipController. We update the display layout state and sent
through the bounds as a WCT in the final orientation to match the layer
position.

Note: we might get a temporary late draw flicker after the animation is over,
this is a separate potentially Core-related being discussed in b/372767189.

Bug: 372310588
Flag: com.android.wm.shell.enable_pip2
Test: enter PiP from landscape to portrait

Change-Id: Ifff3caf5521cc60f66f8ccfbae360e45528c3a16
8 files changed