Convert EventScheduler to use classes for callbacks

std::function is slow to construct and destroy.  Convert the hot path
over to use a class instead.

Change-Id: Ic7627da065576ef0c03bb09e07b60ee5a95b0c94
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/aos/events/event_scheduler.cc b/aos/events/event_scheduler.cc
index 6f2c2c8..c06638c 100644
--- a/aos/events/event_scheduler.cc
+++ b/aos/events/event_scheduler.cc
@@ -8,8 +8,8 @@
 
 namespace aos {
 
-EventScheduler::Token EventScheduler::Schedule(
-    monotonic_clock::time_point time, ::std::function<void()> callback) {
+EventScheduler::Token EventScheduler::Schedule(monotonic_clock::time_point time,
+                                               Event *callback) {
   return events_list_.emplace(time, callback);
 }
 
@@ -58,9 +58,9 @@
   CHECK_EQ(t.boot, boot_count_);
   CHECK_EQ(t.time, iter->first) << ": Time is wrong on node " << node_index_;
 
-  ::std::function<void()> callback = ::std::move(iter->second);
+  Event *callback = iter->second;
   events_list_.erase(iter);
-  callback();
+  callback->Handle();
 
   converter_->ObserveTimePassed(scheduler_scheduler_->distributed_now());
 }