Model the TopLevelArtifactContext as an argument to the CompletionFunction rather than a PRECOMPUTED value.

Having a stale TopLevelArtifactContext leads to invalidation of all the top level target nodes, causing time wasted due to a lot of cache hits for a null build.

--
MOS_MIGRATED_REVID=127585059
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
index 763d1fa..342784c 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionDataTest.java
@@ -93,13 +93,15 @@
     Executor executor = new DummyExecutor(scratch.dir("/"));
     amnesiacBuilder()
         .buildArtifacts(
-            reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null);
+            reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null,
+            null);
     assertSame(executor, action.executor);
 
     executor = new DummyExecutor(scratch.dir("/"));
     amnesiacBuilder()
         .buildArtifacts(
-            reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null);
+            reporter, outputs, null, null, null, null, executor, null, /*explain=*/ false, null,
+            null);
     assertSame(executor, action.executor);
   }