Introduce per-user InputMethodSettings cache (2nd try)

As a preparation for concurrent multi-user support in
InputMethodManagerService, this CL introduces

  InputMethodSettingsRepository

as a per-user InputMethodSettings repository.

Note that InputMethodSettingsRepository.get(userId) has not yet used
in this CL thus there must be no user observable behavior change.

This CL was reverted once [1] because of an unexpected boot time regression in
SystemServerTiming_StartInputMethodManagerLifecycle-mean.  The major contributor
of the boot time regression should have been addressed in a more streigtforward
way [2].

 [1]: I1e6caa541620523ffdd611042c80a3b2562ae0be
      73d1ca189f272feb9a8323971bdee3b6f5126ebf
 [2]: I8e51b1ced4dc16cdca7e898885c64793665fafef
      bce89b5742781e680efac88cbc7179bf029638d9

Bug: 309837937
Bug: 333591545
Test: presubmit
Change-Id: If7d9dc5636f1bf04f02a18c84d55681914e82014
3 files changed