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/third_party/ceres/BUILD b/third_party/ceres/BUILD
index 5fa8ef2..cb25844 100644
--- a/third_party/ceres/BUILD
+++ b/third_party/ceres/BUILD
@@ -32,6 +32,7 @@
 # not support parameterization around threading choice or sparse backends.
 
 load("//:bazel/ceres.bzl", "ceres_library")
+load("@org_frc971//tools/build_rules:select.bzl", "compiler_select")
 
 ceres_library(
     name = "ceres",
@@ -167,7 +168,10 @@
     # TODO(keir): When the tests are macro-ified, apply these selectively.
     "-Wno-address",
     "-Wno-unused-parameter",
-]
+] + compiler_select({
+    "gcc": ["-Wno-use-after-free"],
+    "clang": [],
+})
 
 TEST_DEPS = [
     "//:ceres",