Drop unused parameter.
Rename Schedule -> TopologyScheduler.
whitespace
Start Schedule, which represents a topology schedule being built.
Schedule takes its topology details now.
Schedule#complete assigns a final schedule to the underlying cluster.
Show schedule declares all assigned executors.

..to a single slot per host.  Maybe not ideal, thinking about that still.
Prove trying to schedule on unknown machines fails harmlessly.
Schedule will not assign more than topology.getNumWorkers() slots.

Note it will still under-assign, and it pays no attention to any previous partial scheduling described by Cluster#getAssignmentById.
Schedule now respects numWorkers even if a prior schedule is present.
Begin weaving Schedule into ExecutorPreference and TopologyScheduler.
I like my test helpers above their uses.
Weave schedule expectations into ExecutorPreference tests.
Give schedule control flow within #findAvailableSlot.
We'll redo the local count display in a bit.
Weave Schedule into TopologyScheduler's tests.
Leave cluster assignment to Schedule.
Make the test slightly less clumsy.
ExecutorPreference now uses Schedule exclusively to see availability.
whitespace