When a DAG node gets scheduled, it's UnscheduledSuccs variable becomes invalid. Up until now we had no way in the code of expressing this. This patch converts UnscheduledSuccs to an std::optional in order to protect its use when not valid.