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.
I expressed the same idea to @pmorie yesterday; if we can agree on a label to assign build pods, I can easily narrow the poll scope here. Add "build" to all pods?