Fix starter_test under msan

We were running a std::function that was getting deleted while being
run.  Convert that over to a reference to prevent the use after free.

Change-Id: Ie646443542e384af841292394397866627d7bf2a
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/starter/starter_test.cc b/aos/starter/starter_test.cc
index d26f414..5888233 100644
--- a/aos/starter/starter_test.cc
+++ b/aos/starter/starter_test.cc
@@ -535,7 +535,7 @@
       LOG(INFO) << "Waiting for starter to close.";
       std::this_thread::sleep_for(std::chrono::seconds(1));
     }
-    client.SetTimeoutHandler(stage3);
+    client.SetTimeoutHandler(std::ref(stage3));
     client.SetSuccessHandler([]() {
       LOG(INFO) << "stage3 success handler called.";
       FAIL() << ": Command should not have succeeded here.";
@@ -549,7 +549,7 @@
     LOG(INFO) << "Begin stage1";
     client.SetTimeoutHandler(
         []() { FAIL() << ": Command should not have timed out."; });
-    client.SetSuccessHandler(stage2);
+    client.SetSuccessHandler(std::ref(stage2));
     client.SendCommands({{Command::STOP, "ping", {client_node}}},
                         std::chrono::seconds(5));
     LOG(INFO) << "End stage1";