Up priorities of some of threads.

Specifically:
-Set RT priorities on the 2020 wpilib_interface threads.
-Set RT priorities on some of the threads spawned by the HAL in
 wpilib_interface.
-Catch both spi0 and spi1 in the ADIS16470 driver, although I'm guessing
 that only spi0 really matters.

 Also, make the ShmEventLoop name propagate through to the thread name
 so that we have sane thread names on more things.

Change-Id: I4d986ba2eb19d90a0a56b40e0ec9766300a95076
diff --git a/frc971/wpilib/ahal/RobotBase.h b/frc971/wpilib/ahal/RobotBase.h
index 24e2898..cf1ed4c 100644
--- a/frc971/wpilib/ahal/RobotBase.h
+++ b/frc971/wpilib/ahal/RobotBase.h
@@ -11,6 +11,7 @@
 #include <iostream>
 #include <thread>
 
+#include "aos/realtime.h"
 #include "hal/HAL.h"
 #include "frc971/wpilib/ahal/Base.h"
 
@@ -34,11 +35,15 @@
 #else
 #define START_ROBOT_CLASS(_ClassName_)                                       \
   int main(int argc, char *argv[]) {                                         \
-    ::aos::InitGoogle(&argc, &argv);                                         \
+    aos::InitGoogle(&argc, &argv);                                           \
+    /* HAL_Initialize spawns several threads, including the CAN drivers.  */ \
+    /* Go to realtime so that the child threads are RT.                   */ \
+    aos::SetCurrentThreadRealtimePriority(10);                               \
     if (!HAL_Initialize(500, 0)) {                                           \
       std::cerr << "FATAL ERROR: HAL could not be initialized" << std::endl; \
       return -1;                                                             \
     }                                                                        \
+    aos::UnsetCurrentThreadRealtimePriority();                               \
     HAL_Report(HALUsageReporting::kResourceType_Language,                    \
                HALUsageReporting::kLanguage_CPlusPlus);                      \
     static _ClassName_ robot;                                                \