Implement Ranchu HWC3

HWC3 is the big hidl to aidl switch.

Notes on the new interface vs the old interface:

* `ComposerClient` is effectively the old `Device`.

* Many of the old set-property and do-action functions are now
  called via a "command buffer" like interface in
  `ComposerClient::executeCommands()`.

* Ranchu now explicitly starts the service via a `main()` instead
  of the having android.hardware.graphics.composer@2.4-service
  finding the magic `HAL_MODULE_INFO_SYM`.

* Uses the `ComposerResources` util to handling buffer importing
  and caching. This is probably a nice win compared to importing
  and releasing before/after each use!

* Uses a new pmem device for persistent boot config configuration.

Bug: b/193240715
Test: cvd start --gpu_mode=guest_swiftshader
Test: vts -m VtsHalGraphicsComposer3_TargetTest
Test: cvd start --gpu_mode=gfxstream
Test: vts -m VtsHalGraphicsComposer3_TargetTest
Change-Id: I45baffd68f284f603d22122f7d9ff4a3bcfe7c3a
diff --git a/Android.mk b/Android.mk
index 5ac775e..a4934ee 100644
--- a/Android.mk
+++ b/Android.mk
@@ -172,6 +172,7 @@
 ifeq ($(shell test $(PLATFORM_SDK_VERSION) -gt 28 -o $(IS_AT_LEAST_QPR1) = true && echo isApi29OrHigher),isApi29OrHigher)
     # HWC2 enabled after P
     include $(GOLDFISH_OPENGL_PATH)/system/hwc2/Android.mk
+    include $(GOLDFISH_OPENGL_PATH)/system/hwc3/Android.mk
     # hardware codecs enabled after P
     include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/common/Android.mk
     include $(GOLDFISH_OPENGL_PATH)/system/codecs/omx/plugin/Android.mk