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/events/logging/log_cat.cc b/aos/events/logging/log_cat.cc
index a2441c8..b9e940c 100644
--- a/aos/events/logging/log_cat.cc
+++ b/aos/events/logging/log_cat.cc
@@ -83,7 +83,7 @@
   aos::logger::SpanReader reader(argv[1]);
   absl::Span<const uint8_t> raw_log_file_header_span = reader.ReadMessage();
 
-  if (raw_log_file_header_span == absl::Span<const uint8_t>()) {
+  if (raw_log_file_header_span.empty()) {
     LOG(WARNING) << "Empty log file on " << reader.filename();
     return 0;
   }
@@ -98,7 +98,7 @@
   }
   while (true) {
     absl::Span<const uint8_t> maybe_header_data = reader.PeekMessage();
-    if (maybe_header_data == absl::Span<const uint8_t>()) {
+    if (maybe_header_data.empty()) {
       break;
     }
 
@@ -153,7 +153,7 @@
   while (true) {
     const aos::SizePrefixedFlatbufferSpan<aos::logger::MessageHeader> message(
         reader.ReadMessage());
-    if (message.span() == absl::Span<const uint8_t>()) {
+    if (message.span().empty()) {
       break;
     }
     CHECK(message.Verify());