TrackEvent: Add support for dynamically enabled tracing categories

This patch introduces support for annotating track events with named
tracing categories. Each category can be individually enabled or
disabled using a trace config.

The set of categories is defined at compile time using a macro:

  PERFETTO_DEFINE_CATEGORIES(
      PERFETTO_CATEGORY(cat1),
      PERFETTO_CATEGORY(cat2),
      PERFETTO_CATEGORY(cat3));

We also introduce a set of macros for efficiently emitting track events
with category annotation:

  TRACE_EVENT_BEGIN("cat1", "EventName");
  TRACE_EVENT_END();

The trace point implementation replaces the per-data source instance
enable bitmap with a per-category bitmap in order to avoid doing any
extra work for categories that aren't enabled for tracing.

Bug: 132678367
Change-Id: I84cdb13fc2608a23f311f49a3402640c92199909
diff --git a/Android.bp b/Android.bp
index 3b14ab4..bb3f96b 100644
--- a/Android.bp
+++ b/Android.bp
@@ -4974,9 +4974,10 @@
     "src/tracing/internal/in_process_tracing_backend.cc",
     "src/tracing/internal/system_tracing_backend.cc",
     "src/tracing/internal/tracing_muxer_impl.cc",
+    "src/tracing/internal/track_event_internal.cc",
     "src/tracing/platform.cc",
     "src/tracing/tracing.cc",
-    "src/tracing/track_event.cc",
+    "src/tracing/track_event_category_registry.cc",
     "src/tracing/virtual_destructors.cc",
   ],
 }
@@ -4986,6 +4987,8 @@
   name: "perfetto_src_tracing_client_api_integrationtests",
   srcs: [
     "src/tracing/api_integrationtest.cc",
+    "src/tracing/test/tracing_module.cc",
+    "src/tracing/test/tracing_module2.cc",
   ],
 }