Pass SkylarkSemantics through Skyframe instead of the options class

Also remove the use of the @UsesOnlyCoreTypes annotation on SkylarkSemanticsOptions. It was only there to help mark that the options class was safe to put in Skyframe.

RELNOTES: None
PiperOrigin-RevId: 171248504
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
index 2273f7e..4041a5b 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
@@ -29,6 +29,15 @@
 @AutoValue
 public abstract class SkylarkSemantics {
 
+  /**
+   * The AutoValue-generated concrete class implementing this one.
+   *
+   * <p>AutoValue implementation classes are usually package-private. We expose it here for the
+   * benefit of code that relies on reflection.
+   */
+  public static final Class<? extends SkylarkSemantics> IMPL_CLASS =
+      AutoValue_SkylarkSemantics.class;
+
   // <== Add new options here in alphabetic order ==>
   public abstract boolean incompatibleBzlDisallowLoadAfterStatement();
   public abstract boolean incompatibleCheckedArithmetic();