Add simulation support for split RemoteMessage channels

In order to handle simulation sending messages as fast as possible, and
messages sent infrequently with timestamps delivered, we want to split
each channel's RemoteMessage timestamps into a separate channel.

Teach SimulatedNetworkBridge how to use it, and add tests for both the
old and new method.

Change-Id: Ie59f322f3d4dce3219303216707c46e24f9f9ff3
diff --git a/aos/events/simulated_network_bridge.h b/aos/events/simulated_network_bridge.h
index 1145461..c1ff698 100644
--- a/aos/events/simulated_network_bridge.h
+++ b/aos/events/simulated_network_bridge.h
@@ -6,6 +6,7 @@
 #include "aos/network/message_bridge_client_status.h"
 #include "aos/network/message_bridge_server_status.h"
 #include "aos/network/remote_message_generated.h"
+#include "aos/network/timestamp_channel.h"
 
 namespace aos {
 namespace message_bridge {
@@ -47,10 +48,9 @@
     State(const State &state) = delete;
 
     std::unique_ptr<aos::EventLoop> event_loop;
+    ChannelTimestampSender timestamp_loggers;
     MessageBridgeServerStatus server_status;
     MessageBridgeClientStatus client_status;
-
-    std::vector<aos::Sender<RemoteMessage>> timestamp_loggers;
   };
   // Map of nodes to event loops.  This is a member variable so that the
   // lifetime of the event loops matches the lifetime of the bridge.