2.26.46: only do things in-image if needed.
This restores the feature of do-first that was lost while refactoring ASDF to fix the timestamp propagation issue. The old asdf-bundle worked implicitly because of do-first: fasl-op DEPENDS-ON compile-op, and compile-op has a DO-FIRST on the load-op of dependencies, NOT a DEPENDS-ON, so if the compile-op is "done" (which did NOT check the timestamps of dependencies), then the dofirst is never consulted and load-op is never traversed. In our new ASDF, we want to always traverse the load-op of dependencies, so we can propagate their timestamps; however, we still want to only actually load them if they are needed. Therefore, visiting actions takes an additional flag "needed in this image", and each visited action can be planned or not planned yet, and a not planned yet action can be visited a second time to plan it after recursively visiting its dependencies with the "needed" flag set. Tests were fixed now to work now that this distinction exists.
Showing with 119 additions and 72 deletions