protozero: add proto decoder class for efficient in-place decoding

This new class allows decoding of protobufs with minimal overhead - i.e.
no allocations or unnecessary parsing. This allows for very fast parsing
of traces which is required for the trace processor loading code.

Bug: 80416541
Change-Id: I8f9d5d9525f7f17ca7e0b513c5c52a52600bf1e2
diff --git a/Android.bp b/Android.bp
index 47c381f..3af992e 100644
--- a/Android.bp
+++ b/Android.bp
@@ -61,6 +61,7 @@
     "src/ipc/virtual_destructors.cc",
     "src/protozero/message.cc",
     "src/protozero/message_handle.cc",
+    "src/protozero/proto_decoder.cc",
     "src/protozero/proto_utils.cc",
     "src/protozero/scattered_stream_null_delegate.cc",
     "src/protozero/scattered_stream_writer.cc",
@@ -167,6 +168,7 @@
     "src/perfetto_cmd/rate_limiter.cc",
     "src/protozero/message.cc",
     "src/protozero/message_handle.cc",
+    "src/protozero/proto_decoder.cc",
     "src/protozero/proto_utils.cc",
     "src/protozero/scattered_stream_null_delegate.cc",
     "src/protozero/scattered_stream_writer.cc",
@@ -313,6 +315,7 @@
     "src/ipc/virtual_destructors.cc",
     "src/protozero/message.cc",
     "src/protozero/message_handle.cc",
+    "src/protozero/proto_decoder.cc",
     "src/protozero/proto_utils.cc",
     "src/protozero/scattered_stream_delegate_for_testing.cc",
     "src/protozero/scattered_stream_null_delegate.cc",
@@ -3481,6 +3484,7 @@
     "src/ipc/virtual_destructors.cc",
     "src/protozero/message.cc",
     "src/protozero/message_handle.cc",
+    "src/protozero/proto_decoder.cc",
     "src/protozero/proto_utils.cc",
     "src/protozero/scattered_stream_null_delegate.cc",
     "src/protozero/scattered_stream_writer.cc",
@@ -3699,6 +3703,8 @@
     "src/protozero/message_handle.cc",
     "src/protozero/message_handle_unittest.cc",
     "src/protozero/message_unittest.cc",
+    "src/protozero/proto_decoder.cc",
+    "src/protozero/proto_decoder_unittest.cc",
     "src/protozero/proto_utils.cc",
     "src/protozero/proto_utils_unittest.cc",
     "src/protozero/scattered_stream_delegate_for_testing.cc",