Mark apex sessions as successful upon boot completion

Instead of marking apex sessions as successful immediately, wait
until the boot has completed. This ensures that the checkpoint
has been committed. This is necessary since the apex session
state lives in /metadata, so any changes to the session will
persist regardless of the checkpoint state. This change ensures
that APK and APEX sessions behave the same way if the device
reboots after activation, but before boot completion.

Create a new lifecycle class within Staging Manager to receive
calls for boot completion.

Test: atest ApexRollbackTests
Test: Manual test of rebooting device after activation and before
     boot completion, and ensuring session is not marked as successful
Bug: 154705130
Change-Id: I822e46123d3f4d3d84e0c50c9aa791c1a81e8f50
1 file changed