Remove the unnecessary `BuildConfigurationValue` wrapper around `BuildConfiguration`.

Instead, have `BuildConfiguration` implement `SkyValue` directly, and rename it to `BuildConfigurationValue`. Its `equals` and `hashCode` methods are removed - they were incomplete (notably, they did not consider the repository name). This was covered up by the fact that the wrapping `SkyValue` did not implement equality, preventing false change pruning.

`BuildConfigurationValue.Key` is promoted to a top-level class `BuildConfigurationKey`.

PiperOrigin-RevId: 406166220
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index 2633d47..a8f56d5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -41,7 +41,7 @@
 import com.google.devtools.build.lib.analysis.ResolvedToolchainContext;
 import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
 import com.google.devtools.build.lib.analysis.ToolchainCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
 import com.google.devtools.build.lib.analysis.config.ConfigConditions;
 import com.google.devtools.build.lib.analysis.config.ConfigurationResolver;
 import com.google.devtools.build.lib.analysis.config.DependencyEvaluationException;
@@ -235,7 +235,7 @@
     }
 
     ConfiguredTargetValue baseConfiguredTargetValue;
-    BuildConfiguration aspectConfiguration = null;
+    BuildConfigurationValue aspectConfiguration = null;
 
     try {
       baseConfiguredTargetValue =
@@ -248,9 +248,8 @@
     if (aspectHasConfiguration) {
       try {
         aspectConfiguration =
-            ((BuildConfigurationValue)
-                    baseAndAspectValues.get(key.getAspectConfigurationKey()).get())
-                .getConfiguration();
+            (BuildConfigurationValue)
+                baseAndAspectValues.get(key.getAspectConfigurationKey()).get();
       } catch (ConfiguredValueCreationException e) {
         throw new IllegalStateException("Unexpected exception from BuildConfigurationFunction when "
             + "computing " + key.getAspectConfigurationKey(), e);
@@ -260,7 +259,7 @@
     ConfiguredTarget associatedTarget = baseConfiguredTargetValue.getConfiguredTarget();
 
     Package targetPkg;
-    BuildConfiguration configuration = null;
+    BuildConfigurationValue configuration = null;
     PackageValue.Key packageKey =
         PackageValue.key(associatedTarget.getOriginalLabel().getPackageIdentifier());
     if (associatedTarget.getConfigurationKey() == null) {
@@ -280,9 +279,7 @@
         return null;
       }
       targetPkg = ((PackageValue) result.get(packageKey)).getPackage();
-      configuration =
-          ((BuildConfigurationValue) result.get(associatedTarget.getConfigurationKey()))
-              .getConfiguration();
+      configuration = (BuildConfigurationValue) result.get(associatedTarget.getConfigurationKey());
     }
 
     Target target;
@@ -518,7 +515,10 @@
 
   @Nullable
   private static UnloadedToolchainContext getUnloadedToolchainContext(
-      Environment env, AspectKey key, Aspect aspect, @Nullable BuildConfiguration configuration)
+      Environment env,
+      AspectKey key,
+      Aspect aspect,
+      @Nullable BuildConfigurationValue configuration)
       throws InterruptedException, AspectCreationException {
     // Determine what toolchains are needed by this target.
     UnloadedToolchainContext unloadedToolchainContext = null;
@@ -531,7 +531,7 @@
             (UnloadedToolchainContext)
                 env.getValueOrThrow(
                     ToolchainContextKey.key()
-                        .configurationKey(BuildConfigurationValue.key(configuration))
+                        .configurationKey(configuration.getKey())
                         .requiredToolchainTypeLabels(requiredToolchains)
                         .build(),
                     ToolchainException.class);
@@ -553,7 +553,7 @@
    */
   // TODO(#10523): Remove this when the migration period for toolchain transitions has ended.
   private static boolean shouldUseToolchainTransition(
-      @Nullable BuildConfiguration configuration, AspectDefinition definition) {
+      @Nullable BuildConfigurationValue configuration, AspectDefinition definition) {
     // Check whether the global incompatible change flag is set.
     if (configuration != null) {
       PlatformOptions platformOptions = configuration.getOptions().get(PlatformOptions.class);
@@ -624,11 +624,11 @@
   @Nullable
   private AspectValue createAliasAspect(
       Environment env,
-      BuildConfiguration hostConfiguration,
+      BuildConfigurationValue hostConfiguration,
       TargetAndConfiguration originalTarget,
       Aspect aspect,
       AspectKey originalKey,
-      BuildConfiguration aspectConfiguration,
+      BuildConfigurationValue aspectConfiguration,
       ConfiguredTarget configuredTarget)
       throws AspectFunctionException, InterruptedException {
     ImmutableList<Label> aliasChain =
@@ -827,7 +827,7 @@
       Aspect aspect,
       ConfiguredAspectFactory aspectFactory,
       ConfiguredTargetAndData associatedTarget,
-      BuildConfiguration aspectConfiguration,
+      BuildConfigurationValue aspectConfiguration,
       ConfigConditions configConditions,
       ResolvedToolchainContext toolchainContext,
       OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> directDeps,