Also increase minimum CMake, GCC, and Clang versions to match Ubuntu 18.04 LTS. This sets our minimum supported version of the C++ standard to C++17.
This is an initial pass, simply moving the existing logic as-is. Future PR's will attempt to refactor and improve the cmake stuff.