Start builds for builder in parallel

In workloads with hundreds of build requests to be scheduled
on hundreds of slaves, scheduling these requests serially
can become a bottle neck.  In some situations we see build
requests come in faster then they can get scheduled.  It
turns out that a lot of slowness involved in scheduling a
individual build requests can be communicating with the build
slave (e.g. pinging the slave).  As this process is prime to
be parallelized, this diff changes the scheduling code a bit
to grab all available buildrequest/slave combos available for
a builder in one swoop, and dispatches these in parallel to
hide most of this communication delay.  In practice, this made
the scheduler a lot more efficient in big workload scenarios.