[WIP] Least load scheduler: a simple version

This PR is trying to implement a least load scheduler as mentioned in #471. It is still under development but feel free to make any comment. (This PR depends on #448. I will clean the commit history later.)
I'm not a fan of making the scheduler keep state like this. Also do we know that it's actually a problem to assign stuff in rapid succession?