protozero: simplify packed field and allow heap growth

This CL makes the code that handles packed repeated
field encoding simpler, more ergonomic and easy to use.
It mainly  adds support for dynamic growing on the heap.

The driving rationale of this CL is the upcoming code
that will handle proto parsing and re-encoding without
libprotobuf, which needs to deal with packed fields.
In that context, the code cannot have an upper bound,
it just needs to pass through as many fields as necessary.

This CL catches the occasion to simplify the code that
handles packed fields. The previous architecture was
too clever, had too many extensions points which turned
out to be hard to really extend.
This CL is simplifying that code making the following
assumptions:
- We don't really care about making the stack size
  configurable. One size should fit everybody.
- Having a hard-limit for StackAllocated has always been
  brittle. There seems to be lot of clever code in ftrace
  that tries to size everything accordingly to this limtation.
- Less code and less templates overall, the code seems easier
  to reason about now.

Bug: 132880619
Test: perfetto_unittests
Change-Id: Ic3397b101e14482358f9755673ce196c0a3a1bb7
diff --git a/Android.bp b/Android.bp
index 5fe6780..e6487db 100644
--- a/Android.bp
+++ b/Android.bp
@@ -4396,6 +4396,7 @@
   srcs: [
     "src/protozero/message.cc",
     "src/protozero/message_handle.cc",
+    "src/protozero/packed_repeated_fields.cc",
     "src/protozero/proto_decoder.cc",
     "src/protozero/scattered_heap_buffer.cc",
     "src/protozero/scattered_stream_null_delegate.cc",