Initial cut of a spreading scheduler.

In Go you can do this in one line: 

h[i], h[j] = h[j], h[i]