Refactor build API and controller

Refactor the build API and validation. Refactor the build controller
to use the upstream cache package where possible. Use watches wherever
possible.
@jcantrill Actually I should have just made 53 look like:

    var nextStatus BuildStatus

I'm not sure if I care to rewrite history to amend the original commit for this right now though.