Migrate CppSemantics logic to Starlark.

This change removes the `CppSemantics` interface.

PiperOrigin-RevId: 820656681
Change-Id: I200fc829843efa0b2ed49d099a7d92764a3002c3
diff --git a/cc/common/semantics.bzl b/cc/common/semantics.bzl
index d100740..331be49 100644
--- a/cc/common/semantics.bzl
+++ b/cc/common/semantics.bzl
@@ -28,6 +28,10 @@
 def _validate_attributes(_ctx):
     pass
 
+# buildifier: disable=unused-variable
+def _validate_layering_check_features(ctx, cc_toolchain, unsupported_features):
+    pass
+
 def _get_stl():
     return attr.label()
 
@@ -175,6 +179,7 @@
     ],
     ALLOWED_RULES_WITH_WARNINGS_IN_DEPS = [],
     validate_attributes = _validate_attributes,
+    validate_layering_check_features = _validate_layering_check_features,
     get_repo = _get_repo,
     get_platforms_root = _get_platforms_root,
     additional_fragments = _additional_fragments,