Remove the final users of robot_state and joystick_state

This means we can remove them from the .q file.

Change-Id: Iefded3cf4537b2635341f3248c5f50af1534a241
diff --git a/frc971/wpilib/loop_output_handler.cc b/frc971/wpilib/loop_output_handler.cc
index 7861760..6be855e 100644
--- a/frc971/wpilib/loop_output_handler.cc
+++ b/frc971/wpilib/loop_output_handler.cc
@@ -6,6 +6,7 @@
 #include <functional>
 #include <thread>
 
+#include "aos/events/event-loop.h"
 #include "aos/init.h"
 #include "aos/robot_state/robot_state.q.h"
 
@@ -14,8 +15,12 @@
 
 namespace chrono = ::std::chrono;
 
-LoopOutputHandler::LoopOutputHandler(::std::chrono::nanoseconds timeout)
-    : watchdog_(this, timeout) {}
+LoopOutputHandler::LoopOutputHandler(::aos::EventLoop *event_loop,
+                                     ::std::chrono::nanoseconds timeout)
+    : event_loop_(event_loop),
+      joystick_state_fetcher_(event_loop_->MakeFetcher<::aos::JoystickState>(
+          ".aos.joystick_state")),
+      watchdog_(this, timeout) {}
 
 void LoopOutputHandler::operator()() {
   ::std::thread watchdog_thread(::std::ref(watchdog_));
@@ -26,12 +31,12 @@
     no_joystick_state_.Print();
     fake_joystick_state_.Print();
     Read();
-    ::aos::joystick_state.FetchLatest();
-    if (!::aos::joystick_state.get()) {
+    joystick_state_fetcher_.Fetch();
+    if (!joystick_state_fetcher_.get()) {
       LOG_INTERVAL(no_joystick_state_);
       continue;
     }
-    if (::aos::joystick_state->fake) {
+    if (joystick_state_fetcher_->fake) {
       LOG_INTERVAL(fake_joystick_state_);
       continue;
     }