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/frc971/wpilib/dma.cc b/frc971/wpilib/dma.cc
index 6cc8bf0..a2b2d20 100644
--- a/frc971/wpilib/dma.cc
+++ b/frc971/wpilib/dma.cc
@@ -317,7 +317,9 @@
   }
 }
 
-static_assert(::std::is_pod<DMASample>::value, "DMASample needs to be POD");
+static_assert(::std::is_trivial<DMASample>::value &&
+                  ::std::is_standard_layout<DMASample>::value,
+              "DMASample needs to be POD");
 
 ssize_t DMASample::offset(int index) const {
   return dma_->channel_offsets_[index];