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.
This is horribly bad to depend on.  Why are we not polling on pods that match our build labels?