Track in Plan whether wanted edges have been scheduled

Refactor the `want_` map to track for wanted edges whether they have
been scheduled or not.  This gives `ScheduleWork` a direct place to keep
this information, making the logic more robust and easier to follow.  It
also future-proofs `ScheduleWork` to avoid repeat scheduling if it is
called after an edge has been removed from `ready_` by `FindWork`.
2 files changed