Fix up C++ version detection macros and cmake tests.
Eigen was reporting the wrong c++ version for intermediate versions of
__cplusplus. Also disabling explicit c++17/c++20 constexpr tests,
since these are breaking on our CI. It looks like some versions of
clang are reporting __cplusplus as 20, but don't support all c++20
features.
CI failures: https://gitlab.com/libeigen/eigen_ci_cross_testing/-/pipelines/725775539
Fixes #2584 (closed)