Use the new solver to compute time

Now that all the infrastructure exists, hook it up.  Track which nodes
are connected, if there are any orphaned nodes, and everything else the
old code used to do.

This doesn't yet handle single directions going and coming.

Change-Id: I658347797384f7608870d231a3ebbb2c05dad1dc
diff --git a/aos/events/simulated_event_loop.cc b/aos/events/simulated_event_loop.cc
index 8621851..750df39 100644
--- a/aos/events/simulated_event_loop.cc
+++ b/aos/events/simulated_event_loop.cc
@@ -1034,6 +1034,13 @@
   return result->get();
 }
 
+void SimulatedEventLoopFactory::SetTimeConverter(
+    TimeConverter *time_converter) {
+  for (std::unique_ptr<NodeEventLoopFactory> &factory : node_factories_) {
+    factory->SetTimeConverter(time_converter);
+  }
+}
+
 ::std::unique_ptr<EventLoop> SimulatedEventLoopFactory::MakeEventLoop(
     std::string_view name, const Node *node) {
   if (node == nullptr) {
@@ -1092,9 +1099,7 @@
   }
 }
 
-void SimulatedEventLoopFactory::Exit() {
-  scheduler_scheduler_.Exit();
-}
+void SimulatedEventLoopFactory::Exit() { scheduler_scheduler_.Exit(); }
 
 void SimulatedEventLoopFactory::DisableForwarding(const Channel *channel) {
   CHECK(bridge_) << ": Can't disable forwarding without a message bridge.";