Add RunFor to SimulatedEventLoopFactory

Turns out we really want to be able to run for short periods of time in
simulation. So add support and tests for it.

Change-Id: I9276e1330a0d4eaea717f949516b290b1a01ed89
diff --git a/aos/events/shm-event-loop_test.cc b/aos/events/shm-event-loop_test.cc
index d6f493f..0878e12 100644
--- a/aos/events/shm-event-loop_test.cc
+++ b/aos/events/shm-event-loop_test.cc
@@ -10,11 +10,23 @@
 
 class ShmEventLoopTestFactory : public EventLoopTestFactory {
  public:
-  std::unique_ptr<EventLoop> Make() override {
-    return std::unique_ptr<EventLoop>(new ShmEventLoop());
+  ::std::unique_ptr<EventLoop> Make() override {
+    return ::std::unique_ptr<EventLoop>(new ShmEventLoop());
   }
 
+  ::std::unique_ptr<EventLoop> MakePrimary() override {
+    ::std::unique_ptr<ShmEventLoop> loop =
+        ::std::unique_ptr<ShmEventLoop>(new ShmEventLoop());
+    primary_event_loop_ = loop.get();
+    return ::std::move(loop);
+  }
+
+  void Run() override { CHECK_NOTNULL(primary_event_loop_)->Run(); }
+
+ private:
   ::aos::testing::TestSharedMemory my_shm_;
+
+  ::aos::ShmEventLoop *primary_event_loop_;
 };
 
 INSTANTIATE_TEST_CASE_P(ShmEventLoopTest, AbstractEventLoopTest,