Hmm. I can only get this to behave in what seems an incorrect way when I have `runAtStart == True`.

Well, I guess that depends a little bit on whether we should be scheduling from when we start requesting the build, or finish it. My gut reaction is the later, if they are different, because otherwise it seems like we will be adding pressure to an already overloaded master. (This should only be an appreciable difference if builds take multiple minutes to schedule, or if the timer is seconds in length)

The behaviour when `runAtStart == True` seems worse, since it will start multiple builds at the same time, if it missed scheduling a build. (I've pushed a test that demonstrates this bad behavior).