Filter out summaries of tasks that didn't execute (#4238)
We don't want to exclude tasks entirely from the task graph,
because they could be used as virtual wrappers to trigger
downstream tasks (via dependsOn), but we can filter them
out of the task summary to reduce noise. Another reason to
do this, is that the task summary is initialized in "building"
phase, which is a bit presumptuous, and also wrong for tasks
that end up being a no-op because they aren't implemented.