Proto filtering: add core MessageFilter and FilterUtil

This CL adds:
- The core MessageFilter class, which will take care
  of filtering on-device.
- The FilterUtil class and related tools/proto_filter
  to generate / test filters offline on the host.

Design doc: go/trace-filtering
Bug: 181306741
Test: see new test and fuzzers introduced

Change-Id: I516669d3b6eee746ab306b1f0edd23e89bfbafb3
diff --git a/Android.bp b/Android.bp
index 7f7656a..f81a6a7 100644
--- a/Android.bp
+++ b/Android.bp
@@ -7290,12 +7290,30 @@
   ],
 }
 
+// GN: //src/protozero/filtering:filter_util
+filegroup {
+  name: "perfetto_src_protozero_filtering_filter_util",
+  srcs: [
+    "src/protozero/filtering/filter_util.cc",
+  ],
+}
+
+// GN: //src/protozero/filtering:message_filter
+filegroup {
+  name: "perfetto_src_protozero_filtering_message_filter",
+  srcs: [
+    "src/protozero/filtering/message_filter.cc",
+  ],
+}
+
 // GN: //src/protozero/filtering:unittests
 filegroup {
   name: "perfetto_src_protozero_filtering_unittests",
   srcs: [
     "src/protozero/filtering/filter_bytecode_generator_unittest.cc",
     "src/protozero/filtering/filter_bytecode_parser_unittest.cc",
+    "src/protozero/filtering/filter_util_unittest.cc",
+    "src/protozero/filtering/message_filter_unittest.cc",
     "src/protozero/filtering/message_tokenizer_unittest.cc",
   ],
 }
@@ -9033,6 +9051,8 @@
     ":perfetto_src_protozero_filtering_bytecode_common",
     ":perfetto_src_protozero_filtering_bytecode_generator",
     ":perfetto_src_protozero_filtering_bytecode_parser",
+    ":perfetto_src_protozero_filtering_filter_util",
+    ":perfetto_src_protozero_filtering_message_filter",
     ":perfetto_src_protozero_filtering_unittests",
     ":perfetto_src_protozero_protozero",
     ":perfetto_src_protozero_testing_messages_cpp_gen",
@@ -9126,6 +9146,7 @@
     "libbase",
     "liblog",
     "libprocinfo",
+    "libprotobuf-cpp-full",
     "libprotobuf-cpp-lite",
     "libsqlite",
     "libunwindstack",