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/BUILD b/BUILD
index 587d616..f1f8f15 100644
--- a/BUILD
+++ b/BUILD
@@ -400,12 +400,15 @@
         "include/perfetto/tracing/internal/tracing_muxer.h",
         "include/perfetto/tracing/internal/tracing_tls.h",
         "include/perfetto/tracing/internal/track_event_data_source.h",
+        "include/perfetto/tracing/internal/track_event_internal.h",
+        "include/perfetto/tracing/internal/track_event_macros.h",
         "include/perfetto/tracing/locked_handle.h",
         "include/perfetto/tracing/platform.h",
         "include/perfetto/tracing/trace_writer_base.h",
         "include/perfetto/tracing/tracing.h",
         "include/perfetto/tracing/tracing_backend.h",
         "include/perfetto/tracing/track_event.h",
+        "include/perfetto/tracing/track_event_category_registry.h",
     ],
 )
 
@@ -940,9 +943,10 @@
         "src/tracing/internal/system_tracing_backend.h",
         "src/tracing/internal/tracing_muxer_impl.cc",
         "src/tracing/internal/tracing_muxer_impl.h",
+        "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",
     ],
 )