Extract configuration fragment access logic into ConfigurationFragmentPolicy.

This is the first step toward giving aspects the ability to define their own
required configuration fragments, extracting the required configuration
metadata into a common place.

This should be a no-op refactoring.

--
MOS_MIGRATED_REVID=104249500
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
index 06e068d..8053543 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
@@ -26,6 +26,7 @@
 import com.google.devtools.build.lib.events.EventHandler;
 import com.google.devtools.build.lib.packages.AspectDefinition;
 import com.google.devtools.build.lib.packages.Attribute;
+import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy;
 import com.google.devtools.build.lib.packages.NoSuchPackageException;
 import com.google.devtools.build.lib.packages.NoSuchTargetException;
 import com.google.devtools.build.lib.packages.NoSuchThingException;
@@ -136,8 +137,10 @@
 
     // Get configuration fragments directly required by this target.
     if (target instanceof Rule) {
+      ConfigurationFragmentPolicy configurationFragmentPolicy =
+          target.getAssociatedRule().getRuleClassObject().getConfigurationFragmentPolicy();
       Set<Class<?>> configFragments =
-          target.getAssociatedRule().getRuleClassObject().getRequiredConfigurationFragments();
+          configurationFragmentPolicy.getRequiredConfigurationFragments();
       // An empty result means this rule requires all fragments (which practically means
       // the rule isn't yet declaring its actually needed fragments). So load everything.
       configFragments = configFragments.isEmpty() ? getAllFragments() : configFragments;