Limit slaves to one build at a time
Force definition of 'description' and 'descriptionDone' for Shell steps

This fix an exception caught in twistd.log if the Shell command uses Properties
Reuse idle slaves whenever possible

Instead of choosing slaves randomly, reuse idle slaves when there are some.