Abstract out common code for managing a single instance remote callback

- Pull code that manages the lifecycle of the callback into its own
  class which takes care of cleaning up any callback references and also
  listening for when the binder dies
- Removing some boilerplate code

Bug: 202740477
Test: atest WMShellUnitTests
Change-Id: I7ff4c876fc14291d6523c2c62a7c453a01d96294
7 files changed