Make ApexManager an abstract class

And a two implementations:
* ApexManagerImpl - in case device supports updatable APEX.
* ApexManagerNoOp - in case device does not.

This is a more future-proof way of handling both new flow that supports
APEX and legacy one that does not.

Test: atest CtsStagedInstallHostTestCases
Bug: 131697251
Exempt-From-Owner-Approval: already approved in
https://googleplex-android-review.git.corp.google.com/c/platform/frameworks/base/+/8483219/

Change-Id: Ieeeb2c7f52ff63ebf9c7e913e95e7cf62d8c7441
Merged-In: If27fcdb95d4ec60834bd5334b68f53d4235a5d61
(cherry picked from commit 278af8f43c72a67dd9c471b159e5e184fb3e5f0d)
2 files changed