New scheduling algorithm

Implement new scheduling algorithm that fairly spreads the tasks, so that agents have relatively equal count of containers.

@peterbourgon
None of these types are used outside of `package algo`, so can they be non-exported? sort_test.go would then be `package algo`, which I think is fine.