CMake: Revamp CMake build

- Define CMake cache variables (similar to gn args) for facade backends.
- Create simple initial toolchain files for GCC and Clang.
- Misc updates to pigweed.cmake and pw_build/CMakeLists.txt.
- Add or expand various CMakeLists.txt files.
- Watch CMake files in watch.py to support using CMake in pw watch.

Change-Id: I490d157485d02811a11f6a3589a0508ea1851f58
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/22840
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/pw_polyfill/language_features.h b/pw_polyfill/language_features.h
index 2fc7a2a..9527935 100644
--- a/pw_polyfill/language_features.h
+++ b/pw_polyfill/language_features.h
@@ -22,7 +22,7 @@
 #pragma once
 
 // C++11 is required for the features in this header.
-#if __cplusplus >= 201103L
+#if defined(__cplusplus) && __cplusplus >= 201103L
 
 // If consteval is not supported, use constexpr. This does not guarantee
 // compile-time execution, but works equivalently in constant expressions.
@@ -68,4 +68,4 @@
 }  // namespace pw
 
 #endif  // __cpp_static_assert < 201411L
-#endif  // __cplusplus >= 201103L
+#endif  // defined(__cplusplus) && __cplusplus >= 201103L