[Reland] Allow typed proto messages to be written into TracedValue.

This is a reland of r.android.com/1699768, caused by a lack of `const`
modifier on a WriteIntoTrace function in Chrome, which was fixed by
crrev.com/c/3500621.

=====

This patch adds TracedValue::WriteProto<proto::pbzero::MessageType>()
method, which can be used to write structured proto inside TracedValue.

Also TracedProto now gets an implicit constructor from TracedValue,
which means that if a C++ class implements
Foo::WriteIntoTrace(TracedProto<...>) method, it can be used in all
places where a class implementing Foo::WriteIntoTrace(TracedValue) can
be used, including:
- being passed as an untyped argument to TRACE_EVENT:
  TRACE_EVENT(..., "arg", Foo());
- being passed to TracedDictionary::Add / TracedArray::Append.

This patch also adds MessageType::GetName() method to the protozero
bindings, which is needed for implementation of WriteProto method.

R=eseckler@google.com,skyostil@google.com
CC=primiano@google.com

Bug: b/184558843
Change-Id: I85956dd889780efd1ccf8fd943edee76ab99d820
diff --git a/CHANGELOG b/CHANGELOG
index 02ab1f8..95516cd 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -8,7 +8,7 @@
     * Added flow arrows between binder transaction pairs (request/reply
       and async send/async recv).
   SDK:
-    *
+    * Added support for writing typed proto messages inside DebugAnnotations.
 
 
 v24.2 - 2022-02-10: