Reuse temp mounts in submitStagedSession

Instead of temp mounting an apex twice in submitStagedSession, reuse
the temp mount by keeping a mapping from apex file paths to
MountedApexData objects.

This is done by:
-  Storing temp mount data in ApexDatabase
-  Adding an option to not unmount in the cleanup of
   RunVerifyFnInsideTempMount
-  Allowing StageFnInstall to reuse existing temp
   mounts, while also allowing temp mounts to be
   created if they do not exist.
-  Unmounting any temp mounts upon completion of
   pre-install or post-install

In a follow-up CL we will enforce that any temp mounts
required will be created before calling into StagePreInstall
or StagePostInstall.

Bug: 158470432
Bug: 158469914
Test: atest ApexServiceTest
Test: atest ApexServicePrePostInstallTest
Change-Id: I05ec4e965ef984f663018d6335326e31ec89e293
6 files changed