Add endpoint for cancelling a build

- Adds a new BuildStatus: CANCELLED
- Adds an endpoint for changing the state of a build.  Currently only
the status can be changed and it can only be changed to CANCELLED.
- When a build is cancelled, we deplete any unstarted subjobs, then
call teardown on each slave.
- In the teardown call on a slave, wait for all executors to be idle
before posting idle status to the master.  This guards against a race
condition where a new build is submitted to the slave before all
executors are marked idle
- Client will cancel a build it has started if it is Ctrl-C'ed
Some of the teams at Box have a code standard that all test names should fit the template "test_X_should_Y_when_Z". I disagree with *that* strict of a template, but I do like it when test names read like a spec or a requirement. 

Actually I am totally fine with the test names that you chose above (e.g., test_cancel_exits_early_if_build_not_running), but was just thinking that "test_update_state_canceled" is not quite as clear. I am trying to think of a good standard... maybe a good standard is just that test names contain a verb?