Plumb IME subtype change from IMMS to IMS (again)

This CL introduces

  onInputMethodSubtypeChangedForKeyboardLayoutMapping()

to

  InputManagerInternal

in a way that is similar to our previous attempt [1].

The two major differences are

 A. It also provides InputMethodSubtypeHandle so that
    InputManagerService can use it as look up keys, and

 B. Subtypes that return false from
      isSuitableForPhysicalKeyboardLayoutMapping() [2]
    are mapped to null.

Other than those two differences, this CL is the same as our previous
CL [1].

See also another previous CL [3] about how this callback can be used.

 [1]: I58e71ffce9ac9131551a00dd35e24235dadfef87
      b097b8262ba22040d46d6e212a31b758b7023307
 [2]: Ifc0247041a43ef64f8a76a23832da2ee058c6958
      6980a434cda9d1e7d9e496d91bb9a7edb41990a3
 [3]: Ie88ce1ab77dbfe03ab51d89c1dc9e0a7ddbb3216
      d5f7ed9fe9dc3590f6ef9cb7470e29e836a95907

Bug: 252816846
Test: manually verified
Change-Id: I087f02d06dc5575d2e657c25614d0361ef2ff443
3 files changed