Introduce PointerChoreographer stage in C++

PointerChoreographer will be the new inputflinger component responsible
for managing the pointer icons drawn on the screen.

In this CL, we set up the PointerChoreographer, which will be created
when the choreographer is enabled.

Bug: 293587049
Bug: 278783893
Test: adb shell setprop persist.input.enable_pointer_choreographer 1;
      boot
Change-Id: Ib6b124db4108d11260b220cc57444007b9d865a6
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp
index 435452c..9695e6f 100644
--- a/libs/input/PointerController.cpp
+++ b/libs/input/PointerController.cpp
@@ -290,7 +290,7 @@
     fade(Transition::GRADUAL);
 }
 
-void PointerController::onDisplayViewportsUpdated(std::vector<DisplayViewport>& viewports) {
+void PointerController::onDisplayViewportsUpdated(const std::vector<DisplayViewport>& viewports) {
     std::unordered_set<int32_t> displayIdSet;
     for (const DisplayViewport& viewport : viewports) {
         displayIdSet.insert(viewport.displayId);
diff --git a/libs/input/PointerController.h b/libs/input/PointerController.h
index c7e772d..01748a8 100644
--- a/libs/input/PointerController.h
+++ b/libs/input/PointerController.h
@@ -70,7 +70,7 @@
     void setInactivityTimeout(InactivityTimeout inactivityTimeout);
     void doInactivityTimeout();
     void reloadPointerResources();
-    void onDisplayViewportsUpdated(std::vector<DisplayViewport>& viewports);
+    void onDisplayViewportsUpdated(const std::vector<DisplayViewport>& viewports);
 
     void onDisplayInfosChangedLocked(const std::vector<gui::DisplayInfo>& displayInfos)
             REQUIRES(getLock());