Rationalize `build` and `hack` directories

This also enables incremental builds for dockerized builds.

Fixes #1729
Okay -- `gofmt` is lame and returns 0 even when there are diffs.  Updated to check for output instead of return code -- like the old code was doing.