Initial cut of a spreading and generic scheduler.

FWIW, if/when we add constraints (#367), we'll want to be able to filter nodes by label selector.