Use a non-side-effectful PackageLookupValue#packageExists implementation for //external package lookups, but keep the current (incorrect) semantics for unsuccessful //external package lookups.

Refactor some users of the old WorkspacePackageLookupValue.

--
MOS_MIGRATED_REVID=123034174
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
index db6209e..336a826 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
@@ -222,18 +222,7 @@
     assertTrue(packageLookupValue.packageExists());
     assertEquals(rootDirectory, packageLookupValue.getRoot());
   }
-
-  // TODO(kchodorow): Clean this up (see TODOs in PackageLookupValue).
-  @Test
-  public void testExternalPackageLookupSemantics() {
-    PackageLookupValue existing = PackageLookupValue.workspace(rootDirectory);
-    assertTrue(existing.isExternalPackage());
-    assertTrue(existing.packageExists());
-    PackageLookupValue nonExistent = PackageLookupValue.workspace(rootDirectory.getRelative("x/y"));
-    assertTrue(nonExistent.isExternalPackage());
-    assertFalse(nonExistent.packageExists());
-  }
-
+  
   @Test
   public void testPackageLookupValueHashCodeAndEqualsContract() throws Exception {
     Path root1 = rootDirectory.getRelative("root1");