Use listener to track desktop task visibility in launcher

Launcher registers a listener with WMShell to receive updates about
desktop stashed state. The same listener can be used to receive updates
about desktop visibility.
Previously launcher was relying on sysui state flag for desktop
visibility. But this flag is not checked when launcher starts. Only
updates are handled. When launcher restarts and desktop is visible,
launcher state was not correctly set.
This listener is "sticky", meaning when a listener registers, it will
receive a callback with the current value. This allows launcher to
update its state on start.

Flag: persist.wm.debug.desktop_mode_2
Bug: 280490493
Test: move an app to desktop, observe launcher icons are hidden
Test: swipe home from a desktop app, observe launcher icons shown
Test: while desktop app is open, change system theme to dark or light,
  observer launcher is restarted and icons remain hidden
Change-Id: Id8be1989b32d9ccd2e0539b65529fed096342ac3
2 files changed