Refactor show/hide IME process

Changing the process of how the IME is shown or hidden:
- Showing or hiding the IME is driven through its requested visibility (InsetsControlTarget) via InsetsController/DisplayImeController and thus sent to the server (InsetsStateController).
- When hiding the IME, the requestedVisibleTypes are sent after the end of the animation.
- Introduced new OnImeRequestedChangedListener that is called via WindowManagerService that is called to start the show/hide IME flow in IMMS.
- When the IME becomes (un)available, its leash is (re)set.
- Show/Hide requests from InputMethodManager are redirected through InsetsController.

Test: atest CtsInputMethodTestCases
Flag: android.view.inputmethod.Flags.refactorInsetsController
Bug: 298172246
Change-Id: I8e3a74ee579f085cb582040fdba725e7a63d6b85
21 files changed