When updating the branch status, update the appropriate commit instead of always updating the head

Currently whenever the branch status is updated to indicate whether tests are passing or failing, we always mark the head commit. This is bad, because it can result in code being merged in and deployed that hasn't been tested.

When hubot receives instructions to run the tests, save the commit. As test results are received, retrieve the saved commit and update it.

Also:

* Don't mark the build as pending until the ticket job actually starts.
* Update the documentation to explain some of the assumptions, and add some more sane defaults
* Dynamically grab the number of downstream jobs so that we don't have to update an environment variable
* As soon as one of the downstream jobs fails, mark the branch as failing. No need to wait for all of the rest.