wm: Add ActivityMetricsLaunchObserverRegistry

Public(@hide)-visibility app sequence launch events.

Anything in system_server can use this new API to subscribe to
the ActivityMetricsLaunchObserver from the ActivityTaskManagerInternal
LocalService.

Also change AMLO to expose ActivityRecordProto as a byte[]; the previous
parameter was ActivityRecord, which is package-private.

Also add systrace for measuring performance of the AMLO callbacks
(seems to be about ~250us on a marlin-userdebug; mostly because of the
protobuf serialization).

Test: atest WmTests:ActivityMetricsLaunchObserverTests
Bug: 72170747
Bug: 112680320
Change-Id: Icc07b727b50438bdd65bb01978e15d839809948b
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 4f01d699..d8bc3bc 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -6870,5 +6870,12 @@
                 mProfilerInfo = profilerInfo;
             }
         }
+
+        @Override
+        public ActivityMetricsLaunchObserverRegistry getLaunchObserverRegistry() {
+            synchronized (mGlobalLock) {
+                return mStackSupervisor.getActivityMetricsLogger().getLaunchObserverRegistry();
+            }
+        }
     }
-}
\ No newline at end of file
+}