trace All Module Headers
Schedule a hierarchical tracing of all module files in all visible subdirectories. Do not resolve the imports. Ignore any modules that have syntax errors in their headers. Update the repositories with the latest module version information, or at least cause the version caches to treat the current versions as having been accessed most recently.
Before a module header parsing starts, add the module name to traceRequests. When a module header's parsing is complete, add it to traceCompletions, and if the two now have the same size (and all files have been scanned), commit all repositories and invoke the afterTraceCompletes that was provided in the constructor.
Note that this method may return before the parsing completes, but afterTraceCompletes will be invoked in some Thread either while or after this method runs.
Parameters
What to do each time we've extracted or replayed a ModuleVersion from a valid module file. It's passed a function to invoke when the module is considered effectively processed.