Rationalize `build` and `hack` directories

This also enables incremental builds for dockerized builds.

Fixes #1729
One option is to curl the file to stdout and extract it from a pipe.

You can even have tar change directory if you'd like, though in this case it might not make sense since you're using an `ln` command right afterwards...

```shell
curl -sL "https://github.com/coreos/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz" | tar xz -C "${KUBE_ROOT}/third_party" -f -
```

And if you'd like to extract it under "etcd" directly, without the need for the symlink:

```shell
mkdir -p "${KUBE_ROOT}/third_party/etcd"
curl -sL "https://github.com/coreos/etcd/releases/download/${ETCD_VERSION}/etcd-${ETCD_VERSION}-linux-amd64.tar.gz" | tar xz --strip-components=1 -C "${KUBE_ROOT}/third_party/etcd" -f -
```