* cmake: correct minimum version
the previous script would fail with CMake < 3.13 anyway.
* cmake: canonical way to set C++ options
* ci: use modern CMake syntax
* doc: modern CMake syntax
* most compilers have C++17 fallthrough
* correct logic for [[noreturn]]
---------
Co-authored-by: scivision <scivision@users.noreply.github.com>