Break install up into phases

Install will be broken up into four phases:

1) Prepare - Analyzes any current install state, parses the package and
does initial validation on it.
2) Scan - Interrogates the parsed packages given the context collected
in prepare.
3) Reconcile - Validates scanned packages in the context of each other
and the current system state to ensure that the install will be
successful. Any failures to reconcile will fail the install.
4) Commit - Commits all scanned packages and updates system state. This
is the only place that system state may be modified in the install flow
and all predictable errors must be determined before this phase.

This change moves most low hanging fruit out of prepare and into one of
the phase that most makes sense to own it.

Bug: 109941548
Test: manual - install a few dozen apps from Play Store
Test: manual - install update to GMS Core
Change-Id: Ibd4acc15996d8621d16e1f94d0d5c07826f66e3d
7 files changed