Update WPILib, roborio compilers, and CTRE Phoenix libraries

This borrows heavily from work that Ravago did to initially get this
stuff working.

Tested rudimentary functionality on a test bench, ensured that we could:
* Enable the robot.
* Read joystick and button values.
* Switch between auto and teleop modes.
* Read sensor values (encoder, absolute encoder, potentiometer).
* Read PDP values.
* Drive PWM motors.
* Drive CANivore motors.

Non-WPILib changes are made to accommodate the upgrade roborio
compiler's improved pickiness.

Merge commit '125aac16d9bf03c833ffa18de2f113a33758a4b8' into HEAD

Change-Id: I8648956fb7517b2d784bf58e0a236742af7a306a
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/aos/ipc_lib/lockless_queue.cc b/aos/ipc_lib/lockless_queue.cc
index 5f12423..f380848 100644
--- a/aos/ipc_lib/lockless_queue.cc
+++ b/aos/ipc_lib/lockless_queue.cc
@@ -692,7 +692,7 @@
   queue.Initialize();
   LocklessQueueWatcher result(queue.memory(), priority);
   if (result.watcher_index_ != -1) {
-    return std::move(result);
+    return result;
   } else {
     return std::nullopt;
   }
@@ -891,7 +891,7 @@
   queue.Initialize();
   LocklessQueueSender result(queue.memory(), channel_storage_duration);
   if (result.sender_index_ != -1) {
-    return std::move(result);
+    return result;
   } else {
     return std::nullopt;
   }
@@ -1199,7 +1199,7 @@
   queue.Initialize();
   LocklessQueuePinner result(queue.memory(), queue.const_memory());
   if (result.pinner_index_ != -1) {
-    return std::move(result);
+    return result;
   } else {
     return std::nullopt;
   }