Support adding task listeners for incoming tasks

- The task/transition paths currently have no guaranteed order, if
  a task listener is registered before a task appears, we store it
  as a pending listener which will be fully registered once the task
  next appears.  This pending listener is always removed whenever the
  listener is unregistered, and priority of the launch cookie is >
  than the pending listener (and the pending listener will be removed
  if a launch cookie listener is used).

Bug: 385674612
Flag: EXEMPT bugfix
Test: atest ShellTaskOrganizerTests
Change-Id: Id07d7df4be90beb9271ba0de772a41814e3bf728

4 files changed