Stop global locking on session calls and UID state cache

Instead we lock on each session for its own operations, and check
session internal state instead of the global UID cache so they
don't block on each other for reports. Only the UidObserver will
interrupt and iterate all sessions for updates, but only lock one
session at a time.

Bug: 304839503
Test: atest HintManagerServiceTest
Change-Id: If18af5440f1d36a96854fe48f1bf280dde403a83
3 files changed