tp: support remote clock sync

Implement injestion of the RemoteClockSync message for multi-machine
tracing sessions. A RemoteClockSync message consists of multiple
SyncedClocks messages, each of which contains ClockSnapshot taken on the
remote client and host sides:

```
  remote_clock_sync {
    synced_clocks {
      client_clocks {
        clocks {
          clock_id: 6 # CLOCK_BOOTTIME in the client.
          timestamp: 10000
        }
        # Other clocks domains
      }
      host_clocks {
        clocks {
          clock_id: 6 # CLOCK_BOOTTIME in the host
          timestamp: 111000
        }
      }
    }
    # more synced_clocks {}
  }
```

A round of clock synchronization consists of 4 snapshots taken in the
order of client, host, client, host. The process is repeated with an
interval of 30 seconds.

The proto trace reader injests this message to make an estimation of
clock offset between client and host for converting timestamps from
client to the host clock domains. The trace processor takes an average
of the estimated offset in the RemoteClockSync message to provide a more
stable and predictable offset value. For more details, refer to section
"Clock Synchronization" of go/crosetto-vm-tracing.

Bug: 347623660
Change-Id: Ide96e8fb8101b76464416effe971f57ac3c33374
diff --git a/Android.bp b/Android.bp
index fe5dbfa..333828d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12591,6 +12591,7 @@
         "src/trace_processor/importers/proto/perf_sample_tracker_unittest.cc",
         "src/trace_processor/importers/proto/profile_packet_sequence_state_unittest.cc",
         "src/trace_processor/importers/proto/proto_trace_parser_impl_unittest.cc",
+        "src/trace_processor/importers/proto/proto_trace_reader_unittest.cc",
         "src/trace_processor/importers/proto/proto_trace_tokenizer_unittest.cc",
         "src/trace_processor/importers/proto/string_encoding_utils_unittests.cc",
     ],