Use a single list for available and committed rollbacks.

So that there is a single source of truth for pending backups and
pending restores. This fixes rollback of userdata for staged rollbacks.

Included in this change:
* Distinguish between PENDING_AVAILABLE, AVAILABLE, and COMMITTED
  rollback states.
* Separate completeEnableRollback from makeRollbackAvailable.
* Make timestamp @NonNull and set it when rollback is made available.
* Don't listen for SESSION_UPDATED broadcasts.
* Factor out common code for ignoring saveRollbackData IOException.
* Other minor cleanups.

Test: atest RollbackTest
Test: atest StagedRollbackTest
Test: atest AppDataRollbackHelperTest
Bug: 124044231

Change-Id: I654a7827e9ed15659d0cb80e5a2c29c2660aea08
6 files changed