Pointer Icon Refactor: Cache all used display contexts

The display context is used to load pointer icons. Before the
pointer icon refactor, the pointer icon could only be present on one
display, so we only cached a single context to load pointer icons.
Additionally, the cached context was not updated when the display
changed.

Update the code to lazily cache the context for all displays, and clear
the cache when the display changes or is removed.

Bug: 293587049
Test: atest InputManagerServiceTests
Change-Id: I5355d1fdde0118b3e85383e7f95475bfccc5e72d
1 file changed