Restore the legacy protocol between IMMS and KeyboardLayoutManager

This is a follow up CL to my previous CL [1], which hooked up per-user
call flows in IMMS including the following methods.

 * setInputMethodLocked()
 * setSelectedInputMethodAndSubtypeLocked()

Let's see what went wrong.

InputManagerInternal has the following method so that IMMS can keep
notifying about what is the latest InptuMethodSubtype for each user.

  void onInputMethodSubtypeChangedForKeyboardLayoutMapping(
      @UserIdInt int userId,
      @Nullable InputMethodSubtypeHandle subtypeHandle,
      @Nullable InputMethodSubtype subtype)

Before my CL [1], IMMS had invoked the above method in two cases.

 A. when the current IME's subtype is updated
 B. when the current IME is switched from another user

It turns out that KeyboardLayoutManager has relied on the above
behavior, and it is not yet compatible with concurrent multi-user.

As a short term solution, with this CL both A and B are emulated in
the InputMethodManagerService side.

Longer term solutioins are going to be discussed at Bug 357663774.

 [1]: I9d4615e6da979204c21555e040a687163c1460ab
      fbeeb934f6cb0197e38cfc1783c106ba79e1f6d5

Fix: 356879517
Test: manually verified
Flag: EXEMPT bug fix
Change-Id: Iac268d3da463904a058ce44e403ca1cae691eedf
2 files changed