got it so the gyro should work

I basically split the linear code from the gyro board up into a state
machine that runs in ISRs.
diff --git a/frc971/input/gyro_sensor_receiver.cc b/frc971/input/gyro_sensor_receiver.cc
index ffe538d..1e1ccc4 100644
--- a/frc971/input/gyro_sensor_receiver.cc
+++ b/frc971/input/gyro_sensor_receiver.cc
@@ -88,12 +88,18 @@
   GyroSensorReceiver() : USBReceiver(2) {}
 
   virtual void PacketReceived(const ::aos::time::Time &/*timestamp*/) override {
-    if (data()->bad_gyro) {
+    if (data()->uninitialized_gyro) {
+      LOG(DEBUG, "uninitialized gyro\n");
+      bad_gyro_ = true;
+    } else if (data()->zeroing_gyro) {
+      LOG(DEBUG, "zeroing gyro\n");
+      bad_gyro_ = true;
+    } else if (data()->bad_gyro) {
       LOG(ERROR, "bad gyro\n");
       bad_gyro_ = true;
       gyro.MakeWithBuilder().angle(0).Send();
     } else if (data()->old_gyro_reading) {
-      LOG(WARNING, "old/bad/uninitialized gyro reading\n");
+      LOG(WARNING, "old/bad gyro reading\n");
       bad_gyro_ = true;
     } else {
       bad_gyro_ = false;