Add "allrdeps" function that computes rdeps in whatever universe happens to be loaded.

This avoids having to materialize the full universe scope in memory when doing an rdeps query over "//...".

Another option considered was special-casing the string "//..." if it was the first argument to rdeps, but this seemed cleaner.

--
MOS_MIGRATED_REVID=96878999
diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
index 44db228..8a6e5dc 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
@@ -39,6 +39,7 @@
 import com.google.devtools.build.lib.packages.Target;
 import com.google.devtools.build.lib.pkgcache.PathPackageLocator;
 import com.google.devtools.build.lib.pkgcache.TargetPatternEvaluator;
+import com.google.devtools.build.lib.query2.engine.AllRdepsFunction;
 import com.google.devtools.build.lib.query2.engine.QueryEvalResult;
 import com.google.devtools.build.lib.query2.engine.QueryException;
 import com.google.devtools.build.lib.query2.engine.QueryExpression;
@@ -460,4 +461,10 @@
   public Target getOrCreate(Target target) {
     return target;
   }
+
+  @Override
+  public Iterable<QueryFunction> getFunctions() {
+    return ImmutableList.<QueryFunction>builder()
+        .addAll(super.getFunctions()).add(new AllRdepsFunction()).build();
+  }
 }