Upgrade WPILib and upgraded compilers to C++17

I haven't touched the CTRE libraries yet, although they may need to be
upgraded as well.

Note that this change makes it so that you need either Ubuntu 18.04 or
later or debian buster or later in order to build the code (you may be
able to build code for the roborio on older operating systems, but
running the tests will not work normally).

Change-Id: I0cfa37fe37f830edde6d305e1f50414c369098e4
diff --git a/aos/flatbuffers.h b/aos/flatbuffers.h
index fc91cf9..b48dc1f 100644
--- a/aos/flatbuffers.h
+++ b/aos/flatbuffers.h
@@ -2,8 +2,8 @@
 #define AOS_FLATBUFFERS_H_
 
 #include <array>
+#include <string_view>
 
-#include "absl/strings/string_view.h"
 #include "flatbuffers/flatbuffers.h"
 
 namespace aos {
@@ -127,7 +127,7 @@
 class FlatbufferString : public Flatbuffer<T> {
  public:
   // Builds a flatbuffer using the contents of the string.
-  FlatbufferString(const absl::string_view data) : data_(data) {}
+  FlatbufferString(const std::string_view data) : data_(data) {}
   // Builds a Flatbuffer by copying the data from the other flatbuffer.
   FlatbufferString(const Flatbuffer<T> &other) {
     data_ = std::string(other.data(), other.size());
@@ -161,7 +161,7 @@
 // From a usage point of view, pointers to the data are very different than
 // pointers to the tables.
 template <typename T>
-class FlatbufferDetachedBuffer : public Flatbuffer<T> {
+class FlatbufferDetachedBuffer final : public Flatbuffer<T> {
  public:
   // Builds a Flatbuffer by taking ownership of the buffer.
   FlatbufferDetachedBuffer(flatbuffers::DetachedBuffer &&buffer)