Make TargetPatternResolver#{isPackage, getTargetsInPackage} take a PackageIdentifier instead of a String.

This remarkably fiddly CL is a step towards making wildcards pattern work with remote repositories. I originally wanted to refactor findTargetsBeneathDirectory(), too, but it turns out that it's a much more complicated affair.

--
MOS_MIGRATED_REVID=103622420
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
index b127009..6dc2385 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/TargetPattern.java
@@ -249,7 +249,7 @@
       Preconditions.checkArgument(excludedSubdirectories.isEmpty(),
           "Target pattern \"%s\" of type %s cannot be evaluated with excluded subdirectories: %s.",
           getOriginalPattern(), getType(), excludedSubdirectories);
-      if (resolver.isPackage(path)) {
+      if (resolver.isPackage(PackageIdentifier.createInDefaultRepo(path))) {
         // User has specified a package name. lookout for default target.
         return resolver.getExplicitTarget("//" + path);
       }
@@ -260,7 +260,7 @@
       // first BUILD file is found (i.e. longest prefix match).
       for (int i = pieces.size() - 1; i > 0; i--) {
         String packageName = SLASH_JOINER.join(pieces.subList(0, i));
-        if (resolver.isPackage(packageName)) {
+        if (resolver.isPackage(PackageIdentifier.createInDefaultRepo(packageName))) {
           String targetName = SLASH_JOINER.join(pieces.subList(i, pieces.size()));
           return resolver.getExplicitTarget("//" + packageName + ":" + targetName);
         }
@@ -334,8 +334,18 @@
           return targets;
         }
       }
-      return resolver.getTargetsInPackage(getOriginalPattern(), removeSuffix(pattern, suffix),
-          rulesOnly);
+
+      String packageName = removeSuffix(pattern, suffix);
+
+      try {
+        PackageIdentifier.parse(packageName);
+      } catch (LabelSyntaxException e) {
+        throw new TargetParsingException(
+            "Invalid package name '" + packageName + "': " + e.getMessage());
+      }
+
+      return resolver.getTargetsInPackage(getOriginalPattern(),
+          PackageIdentifier.createInDefaultRepo(packageName), rulesOnly);
     }
 
     @Override