BuildChooser: refactor (slave,breq) logic into strategy object

 * moved the following logic from Builder to BuildChooser
   - slave choice
   - build choice
   - build merging
 * move the following logic from Builder to BuildRequestDistributor
   - managing the brid reclamation

The slave-choice logic now checks if slaves can grab build locks. Slaves that
can are preferred to slaves that cant.

Also adding a customization point that lets slaves to be chosen based on
particular builds; for example, a patch is coming that will add a ForceScheduler
parameter to force a build onto a particular buildslave.
BuildChooser: Fix up comments
BuildChooser: minor enhancements
BuildChooser: address review comments; pyflakes too
Fix pyflakes issue
BuildChooser: address review issues; beef up comments
Create process/buildrequestdistributor.py; move BRD from botmaster.py
BuildChooser: Fix up test comments a bit; fix one unit test broken by 'rejectedSlaves' rename in earlier patch
Merge branch 'BuildChooser' of git://github.com/jaredgrubb/buildbot
update relnotes for pull 615
fix relnote validation