Use Crubit features to control bindings generation.

Currently, all features are marked as experimental. Teehee. Note that this breaks any existing experimental code. (This also mmeans we need to move the C++ STL to experimental.)

There are two "directions" we could have gone for checking the enabled crubit features: we could add `if (is_experimental)` inside the `generate_foo` functions, to control what they output, or we could have them return the level of support they require for the bindings they generated. The advantage of doing it that second way, as this CL does, is that it's impossible to forget to check. By default, the level is `experimental`, so that bindings are only ever moved out of experimental *deliberately*, not by accident. One can still do those checks if one wants to generate different output depending on aspect hints.

PiperOrigin-RevId: 516708019
diff --git a/BUILD b/BUILD
index 962fa9d..a492d3b 100644
--- a/BUILD
+++ b/BUILD
@@ -37,5 +37,7 @@
 crubit_feature_hint(
     name = "experimental",
     crubit_features = _SUPPORTED_FEATURES + ["experimental"],
-    visibility = ["//:__subpackages__"],
+    visibility = [
+        "//:__subpackages__",
+    ],
 )