tp: multi-machine: enable multi-machine tracing

This CL enables injestion of multi-machine trace data to proto trace
format.

* When the default ProtoTraceReader instance first decodes a trace
packet with a non-zero machine_id (indicating the packet comes from a
remote machine), it creates a new instance of ProtoTraceReader, which
forms a new object graph distinct from the default one, for handling all
packets from the same machine.

* The ProtoTraceReader creates a new instance of TraceProcessorContext
that carries the (non-null) machine_id. The TraceProcessorContext is
initialized with a new set of data members (e.g. TrackTracker,
ProcessTracker, ...) distinct from the default trackers. Some data
members are shared with the default context: 1) TraceSorter for sorting
trace data by timestamp across all machines, and 2) TraceStorage that
trace data from different machines are inserted to the same storage
table and are identified using the 'machine_id' column.

Bug: 284258446

Change-Id: I3fa2af31d859ea6de3c9db4a6e1c624526ed733e
diff --git a/Android.bp b/Android.bp
index 85ca01c..ef0d761 100644
--- a/Android.bp
+++ b/Android.bp
@@ -11742,6 +11742,7 @@
         "src/trace_processor/importers/proto/memory_tracker_snapshot_module.cc",
         "src/trace_processor/importers/proto/memory_tracker_snapshot_parser.cc",
         "src/trace_processor/importers/proto/metadata_minimal_module.cc",
+        "src/trace_processor/importers/proto/multi_machine_trace_manager.cc",
         "src/trace_processor/importers/proto/network_trace_module.cc",
         "src/trace_processor/importers/proto/packet_analyzer.cc",
         "src/trace_processor/importers/proto/packet_sequence_state_generation.cc",