Fix racing condition between session abandonment and its verification

This CL prevents a committed staged session from being cleaned up if it
unsafe for some reason. The session is marked destroyed and
StagingManager ensures destroyed session do not get installed anymore.

Meanwhile, when it becomes safe for session to be cleaned up again,
StagingManager will call abandon again to clean it up.

Bug: 145925842
Test: atest StagedInstallTest
Test: atest StagedInstallTest#testAbandonStagedApkBeforeReady
Test: atest StagedInstallTest#testNoSessionUpdatedBroadcastSentForStagedSessionAbandon
Change-Id: Idf0adfb54afcd411c5ea1c49d7fcf5c0cddfcb32
3 files changed