Ensures that dependencies have at least as high priority as dependents

This recursively passes priorities down to dependents so if task A depends on task B, task B must have at least as high a priority as A. This avoids situations where extremely high priority tasks only end up running after all the low-priority tasks have finished because it depends on the one that runs last.
Suppose we have two tasks A and B. A has priority 100 and depends on B. B has priority 1. As part of a larger scheduling process, A gets scheduled, causing a placeholder task to be created for B. Because there is a lot of scheduling happening, it takes several minutes to get around to actually scheduling B. Without this line, B has no stakeholders during these several minutes. During this time, I check the task visualizer to see what the dependency graph is looking like. This calls dep_graph, which in turn calls prune, removing all tasks with no stakeholders. Now when B gets scheduled, the placeholder task is gone so B has priority 1 rather than the priority 100 that it should have inherited from A.

This could also happen with unlucky timing during add_task, but it's much more likely with the extra delay that the priority placeholder adds. I know this can happen because it happened several times while testing this feature before I figured out what the problem. If it helps, I can add a unit test that breaks without this line to better demonstrate the issue.