Introduce SkylarkRepositoryModule

The SkylarkRepositoryModule declare the `repository_rule` function
to Skylark to define new remote repository types (http://goo.gl/OZV3o0).
The work is delagated to the `SkylarkRepositoryFunction` by the
`RepositoryDelegatorFunction`. `SkylarkRepositoryContext` defines the
`ctx` object passed to the `repository_rule` implementation function.

This change also introduce a `SkylarkPath` and the necessary methods
in `SkylarkRepositoryContext` to showcase the creation of a
`local_repository` like repository.

Issue #893: step 3 of the roadmap http://goo.gl/OZV3o0.

--
MOS_MIGRATED_REVID=114895003
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 e01787a..1776ed6 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
@@ -1294,7 +1294,7 @@
       return pkg;
     }
 
-    protected ExternalPackageBuilder externalPackageData() {
+    public ExternalPackageBuilder externalPackageData() {
       return externalPackageData;
     }