Convert gyro_reading over to event loops.

LPD8806 wasn't going to fit in well, but it's never been used on a
robot.  So take the easy way out and remove it.

Change-Id: Ib4d29b40d63a8663878ff1b074057be8b2df9259
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index e7cfae6..b45f016 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -20,7 +20,6 @@
 #include "frc971/shifter_hall_effect.h"
 #include "frc971/wpilib/imu.q.h"
 
-using frc971::sensors::gyro_reading;
 using ::aos::monotonic_clock;
 namespace chrono = ::std::chrono;
 
@@ -39,6 +38,9 @@
           ".frc971.control_loops.drivetrain.localizer_control")),
       imu_values_fetcher_(
           event_loop->MakeFetcher<::frc971::IMUValues>(".frc971.imu_values")),
+      gyro_reading_fetcher_(
+          event_loop->MakeFetcher<::frc971::sensors::GyroReading>(
+              ".frc971.sensors.gyro_reading")),
       localizer_(localizer),
       kf_(dt_config_.make_kf_drivetrain_loop()),
       dt_openloop_(dt_config_, &kf_),
@@ -209,16 +211,16 @@
       }
       break;
     case GyroType::SPARTAN_GYRO:
-      if (gyro_reading.FetchLatest()) {
-        LOG_STRUCT(DEBUG, "using", *gyro_reading.get());
-        last_gyro_rate_ = gyro_reading->velocity;
+      if (gyro_reading_fetcher_.Fetch()) {
+        LOG_STRUCT(DEBUG, "using", *gyro_reading_fetcher_.get());
+        last_gyro_rate_ = gyro_reading_fetcher_->velocity;
         last_gyro_time_ = monotonic_now;
       }
       break;
     case GyroType::FLIPPED_SPARTAN_GYRO:
-      if (gyro_reading.FetchLatest()) {
-        LOG_STRUCT(DEBUG, "using", *gyro_reading.get());
-        last_gyro_rate_ = -gyro_reading->velocity;
+      if (gyro_reading_fetcher_.Fetch()) {
+        LOG_STRUCT(DEBUG, "using", *gyro_reading_fetcher_.get());
+        last_gyro_rate_ = -gyro_reading_fetcher_->velocity;
         last_gyro_time_ = monotonic_now;
       }
       break;