bazel syntax: enforce that ClassObject.getValue returns legal Starlark values

EvalUtils.getAttr now enforces that the value returned by
ClassObject.getValue is a legal value.
Previously, only the ternary SkylarkClassObject.getValue method
offered this postcondition, and it wasn't enforced.

This turned up BuildConfiguration.Fragment,
which was used as a value (e.g. in ctx.fragments.android)
but had forgotten to declare its relationship to StarlarkValue.

Also:
- remove obsolete 'instanceof Class' check.
- remove try/catch of IllegalArgumentException.
  Instead do this check with narrower scope in the fragment code.
  We will fix other cases as they appear.
PiperOrigin-RevId: 284644428
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index 2513b33..56b1ca8 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -1531,7 +1531,7 @@
     assertThat(e)
         .hasMessageThat()
         .contains(
-            "cannot expose internal type to Starlark: class"
+            "invalid Starlark value: class"
                 + " com.google.devtools.build.lib.collect.nestedset.NestedSet");
   }