Increase minimum language standards to C17 and C++17, and update to the latest versions of Protobuf and Abseil. (#21574)
* Bump minimum C/C++ standards to C17 and C++17 This requires GCC 8 or Clang 5, which is available on all platforms we support other than Amazon Linux 2 and RHEL 7. We retain the existing fallback for C11/C++11 via a CMake option to continue support for those platforms. C17 is functionally the language standard equivalent of a bugfix release, and thus doesn’t really have any significant impact. The rationale behind updating to C17 from C11 was mostly a matter of consistency with the C++ standard we require. C++17 has a number of new features and removed a couple of already deprecated features, but all of our code builds cleanly against it with no changes. Updating to C++17 as our C++ requirement lets us update to the latest versions of Protobuf and Abseil, as well as providing generally greater compatibility with possible future dependencies. * Bump bundled Protobuf and Abseil to the latest versions. This gets us a number of fixes, and should also make them play nicer with newer compilers. * Only use C17 if CMake is new enough to know about it. * Key off of compiler features instead of CMake version for C17. This should be more reliable when dealing with problematic systems that have new enough versions of CMake that for some reason don’t actually properly support C17. It should also let us continue working with older compilers that don’t actually support C17.