Enable load() statement in the WORKSPACE file.

RELNOTES[NEW]: Skylark macros are now enabled in WORKSPACE file.

Design document at https://docs.google.com/document/d/1jKbNXOVp2T1zJD_iRnVr8k5D0xZKgO8blMVDlXOksJg/preview

Fixes #337

--
MOS_MIGRATED_REVID=108860301
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java
index 579e060..a9ad155 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Package.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java
@@ -688,6 +688,16 @@
     }
 
     /**
+     * Derive a LegacyBuilder from a normal Builder.
+     */
+    LegacyBuilder(Builder builder) {
+      super(builder.pkg);
+      if (builder.getFilename() != null) {
+        setFilename(builder.getFilename());
+      }
+    }
+
+    /**
      * Sets the globber used for this package's glob expansions.
      */
     LegacyBuilder setGlobber(Globber globber) {
@@ -717,8 +727,8 @@
     }
   }
 
-  public static Builder newExternalPackageBuilder(Path workspacePath, String runfilesPrefix) {
-    Builder b = new Builder(new Package(EXTERNAL_PACKAGE_IDENTIFIER, runfilesPrefix));
+  public static LegacyBuilder newExternalPackageBuilder(Path workspacePath, String runfilesPrefix) {
+    LegacyBuilder b = new LegacyBuilder(EXTERNAL_PACKAGE_IDENTIFIER, runfilesPrefix);
     b.setFilename(workspacePath);
     b.setMakeEnv(new MakeEnvironment.Builder());
     return b;
@@ -799,6 +809,11 @@
       return pkg.getPackageIdentifier();
     }
 
+    /** Determine if we are in the WORKSPACE file or not */
+    public boolean isWorkspace() {
+      return pkg.getPackageIdentifier().equals(EXTERNAL_PACKAGE_IDENTIFIER);
+    }
+
     /**
      * Sets the name of this package's BUILD file.
      */