Handle uninstall for selected controls package

This change introduces PackageChangeRepository, which can be used to
listen for package updates using PackageMonitor. This is more reliable
than using broadcasts, as it registers callbacks directly with
PackageManager

We use this new repository in the ControlsStartable to monitor
uninstallation of the selected controls package and update the controls
state if the package is uninstalled.

Test: atest PackageUpdateMonitorTest
Test: atest PackageChangeRepositoryTest
Test: atest ControlsStartableTest
Test: manually on device by installing test controls apk and then
uninstalling
Bug: 298025023
Bug: 317059572
Bug: 313953586
Flag: NONE

Change-Id: I0c3148409f0e6d664fdeba1c71a7dec121d18341
14 files changed