Convert all year's robots to proper event loops

Each robot has a couple of event loops, one per thread.  Each of these
threads corresponds to the threads from before the change.  y2016 has
been tested on real hardware.

Change-Id: I99f726a8bc0498204c1a3b99f15508119eed9ad3
diff --git a/frc971/wpilib/drivetrain_writer.h b/frc971/wpilib/drivetrain_writer.h
index ea3df46..9397230 100644
--- a/frc971/wpilib/drivetrain_writer.h
+++ b/frc971/wpilib/drivetrain_writer.h
@@ -3,16 +3,20 @@
 
 #include "aos/commonmath.h"
 
+#include "frc971/control_loops/drivetrain/drivetrain.q.h"
 #include "frc971/wpilib/ahal/PWM.h"
 #include "frc971/wpilib/loop_output_handler.h"
 
 namespace frc971 {
 namespace wpilib {
 
-class DrivetrainWriter : public ::frc971::wpilib::LoopOutputHandler {
+class DrivetrainWriter : public ::frc971::wpilib::LoopOutputHandler<
+                             ::frc971::control_loops::DrivetrainQueue::Output> {
  public:
   DrivetrainWriter(::aos::EventLoop *event_loop)
-      : ::frc971::wpilib::LoopOutputHandler(event_loop) {}
+      : ::frc971::wpilib::LoopOutputHandler<
+            ::frc971::control_loops::DrivetrainQueue::Output>(
+            event_loop, ".frc971.control_loops.drivetrain_queue.output") {}
 
   void set_left_controller0(::std::unique_ptr<::frc::PWM> t, bool reversed) {
     left_controller0_ = ::std::move(t);
@@ -35,8 +39,8 @@
   }
 
  private:
-  void Write() override;
-  void Read() override;
+  void Write(
+      const ::frc971::control_loops::DrivetrainQueue::Output &output) override;
   void Stop() override;
 
   double SafeSpeed(bool reversed, double voltage) {