Refactor SystemInterface.

Split SystemInterface into a set of smaller chunks, each wrapping one specific functional set of system APIs.
Provide default implementations of each of those chunks.
Rework SystemInterface to be a class that wraps all the chunks and forwards to each of them.
Add a Builder API to allow one to construct a full SystemInterface from individual chunks.

This turns a fairly heavy-weight interface into smaller pieces which are easier to use individually, and it also makes
it easier for tests to only change a subset of SystemInterface functionality when they need to do so.

Test: runtest -x packages/services/Car/tests/carservice_unit_test/src/com/android/car/CarPowerManagementServiceTest.java
      runtest -x packages/services/Car/tests/carservice_unit_test/src/com/android/car/UptimeTrackerTest.java
      runtest -x packages/services/Car/tests/carservice_test/src/com/android/car/CarPowerManagementTest.java
      runtest -x packages/services/Car/tests/carservice_test/src/com/android/car/CarStorageMonitoringTest.java
      runtest -x packages/services/Car/tests/carservice_test/src/com/android/car/CarDiagnosticManagerTest.java
      runtest -x packages/services/Car/tests/carservice_test/src/com/android/car/CarSensorManagerTest.java
Change-Id: I34c89b526d052126198a148d742123af78eafcbd
Fixes: 67739411
19 files changed