Rationalize `build` and `hack` directories

This also enables incremental builds for dockerized builds.

Fixes #1729
Why rsync and why one command per file instead of just passing the find list to a single rsync/cp/install invocation?

Ah I see this comment now:

```shell
# We use rsync to copy some binaries around.  It is faster (0.3s vs. 1.1s) on my
# machine vs. `install`
```

I think what makes it slow is `find -exec`, instead you can try:

```shell
local filelist
filelist=($(find "${full_binpath_src}" -maxdepth 1 -type f -print))
install -c "${filelist[@]}" "${KUBE_OUTPUT_BINPATH}/${platform}/"
```