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/debian/boringssl.patch b/debian/boringssl.patch
index ceae8bc..d12a7db 100644
--- a/debian/boringssl.patch
+++ b/debian/boringssl.patch
@@ -1,8 +1,16 @@
 diff --git a/BUILD b/BUILD
-index cba9ccb1d..7890c88e6 100644
+index cba9ccb1d..37fab16a7 100644
 --- a/BUILD
 +++ b/BUILD
-@@ -25,6 +25,8 @@ load(
+@@ -16,6 +16,7 @@ licenses(["notice"])
+ 
+ exports_files(["LICENSE"])
+ 
++load("@//tools/build_rules:select.bzl", "compiler_select")
+ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
+ 
+ load(
+@@ -25,6 +26,8 @@ load(
      "crypto_sources",
      "crypto_sources_linux_x86_64",
      "crypto_sources_linux_ppc64le",
@@ -11,7 +19,7 @@
      "crypto_sources_mac_x86_64",
      "fips_fragments",
      "ssl_headers",
-@@ -36,7 +38,17 @@ load(
+@@ -36,7 +39,17 @@ load(
  
  config_setting(
      name = "linux_x86_64",
@@ -30,17 +38,18 @@
  )
  
  config_setting(
-@@ -76,6 +88,9 @@ posix_copts = [
+@@ -76,6 +89,10 @@ posix_copts = [
      "-Wwrite-strings",
      "-Wshadow",
      "-fno-common",
 +    "-Wno-cast-qual",
 +    "-Wno-cast-align",
 +    "-Wno-unused-parameter",
++    "-Wno-cast-function-type",
  
      # Modern build environments should be able to set this to use atomic
      # operations for reference counting rather than locks. However, it's
-@@ -86,6 +101,8 @@ posix_copts = [
+@@ -86,17 +103,26 @@ posix_copts = [
  boringssl_copts = select({
      ":linux_x86_64": posix_copts,
      ":linux_ppc64le": posix_copts,
@@ -49,7 +58,16 @@
      ":mac_x86_64": posix_copts,
      ":windows_x86_64": [
          "-DWIN32_LEAN_AND_MEAN",
-@@ -97,6 +114,8 @@ boringssl_copts = select({
+         "-DOPENSSL_NO_ASM",
+     ],
+     "//conditions:default": ["-DOPENSSL_NO_ASM"],
++}) + compiler_select({
++    "clang": [],
++    "gcc": [
++      "-Wno-array-parameter",
++    ],
+ })
+ 
  crypto_sources_asm = select({
      ":linux_x86_64": crypto_sources_linux_x86_64,
      ":linux_ppc64le": crypto_sources_linux_ppc64le,
@@ -58,7 +76,7 @@
      ":mac_x86_64": crypto_sources_mac_x86_64,
      "//conditions:default": [],
  })
-@@ -112,6 +131,8 @@ posix_copts_c11 = [
+@@ -112,6 +138,8 @@ posix_copts_c11 = [
  boringssl_copts_c11 = boringssl_copts + select({
      ":linux_x86_64": posix_copts_c11,
      ":linux_ppc64le": posix_copts_c11,
@@ -67,7 +85,7 @@
      ":mac_x86_64": posix_copts_c11,
      "//conditions:default": [],
  })
-@@ -125,6 +146,8 @@ posix_copts_cxx = [
+@@ -125,6 +153,8 @@ posix_copts_cxx = [
  boringssl_copts_cxx = boringssl_copts + select({
      ":linux_x86_64": posix_copts_cxx,
      ":linux_ppc64le": posix_copts_cxx,
diff --git a/debian/fts.patch b/debian/fts.patch
index 7357940..ff0c8d6 100644
--- a/debian/fts.patch
+++ b/debian/fts.patch
@@ -1,5 +1,5 @@
---- arm-frc2020-linux-gnueabi/usr/include/fts.h
-+++ arm-frc2020-linux-gnueabi/usr/include/fts.h
+--- arm-nilrt-linux-gnueabi/usr/include/fts.h
++++ arm-nilrt-linux-gnueabi/sysroot/usr/include/fts.h
 @@ -193,7 +193,7 @@ FTS *__REDIRECT (fts_open, (char * const *, int,
  				int (*)(const FTSENT **, const FTSENT **)),
  		     fts64_open);
diff --git a/debian/ni-libraries.BUILD b/debian/ni-libraries.BUILD
index 571f80f..e93895c 100644
--- a/debian/ni-libraries.BUILD
+++ b/debian/ni-libraries.BUILD
@@ -21,9 +21,9 @@
     srcs = [
         "libNiFpgaLv.so.13",
         "libnirio_emb_can.so.21",
-        "src/lib/chipobject/libRoboRIO_FRC_ChipObject.so.22.0.0",
-        "src/lib/netcomm/libFRC_NetworkCommunication.so.22.0.0",
-        "src/lib/visa/libvisa.so.21.0.0",
+        "src/lib/chipobject/libRoboRIO_FRC_ChipObject.so.23.0.0",
+        "src/lib/netcomm/libFRC_NetworkCommunication.so.23.0.0",
+        "src/lib/visa/libvisa.so.22.5.0",
     ],
     hdrs = glob(["src/include/**"]),
     includes = [