Improve scheduling

This changes the type returned from `ListHosts` from a `map[string]host.Host` to a `[]host.Host`, and adds some very simple tools to schedule jobs on the hosts with the smallest number of running jobs.

Hopefully it will provide a mild improvement in the scheduling behavior.
I know it's not the same thing, but could we just use `schedutil.PickHost` here?