test-cmd.sh can fail if public IP not available

test-cmd runs a 127.0.0.1 version of the apiservers, but does not
set --public_address_override, which means it can fail on some systems
(like Macs) which don't expose a bindable external port by default.

Since reachability is not necessary for test-cmd.sh today, set
public_address_override to 127.0.0.1
Rework hack/ and build/ directories.

* Rewrite a bunch of the hack/ directory with modular reusable bash libraries.
* Have 'build/*' build on 'hack/*'.  The stuff in build now just runs hack/* in a docker container.
* Use a docker data container to enable faster incremental builds.
* Standardize output to _output/{local,dockerized}/bin/OS/ARCH/*.  This regularized placement makes cross compilation work.
* Move travis specific scripts under hack/travis

With new dockerized incremental builds, I can do a no-op `make quick-release` in ~30s.  This is a significant improvement.
Merge pull request #2092 from jbeda/1729-hack-build

Rationalize `build` and `hack` directories
Fix a bunch of places where the -machines flag was still attached to the apiserver.
Merge pull request #2118 from brendandburns/fix

Fix a bunch of places where the -machines flag was still attached to the apiserver
Fix minion_cache_ttl and minion_regexp flag change.
Merge pull request #2119 from ddysher/fix-flag-change

Fix minion_cache_ttl and minion_regexp flag change.
Deflake the TestCreate test, by adding an explicit wait.
Improve integration test

Use some constants for tokens.
Refactor tokenfile creation to function.
Reorder some test cases to make lookups follow creates so they succeed.
Add expected status code to test cases (some are not quite what expected,
so filed bugs #2112, #2113, #2114)
Check expected status codes.
Close Body after each iterations so that we don't run out of file handles
  when I add even more test cases in the next PR.
Handle that it is unpredictable whether status 200 or 202 is returned.
Add net-tools pre-req to Vagrant instructions

Adds a note mentioning that `net-tools` are required for bridging VirtualBox's host networks. Added a similar note under the troubleshooting section.
Add support for a 'log' command to kubectl.
Make endpoints return 400 instead of 500
Fix healthz test error handling
Removed 'Metadata' from all types
Merge pull request #2102 from markturansky/v1beta3_refactor_metadata

Refactor v1beta3 - Refactor 'Metadata' to ObjectMeta from all types
Merge pull request #2109 from smarterclayton/test_cmd_can_fail_on_public_addr

test-cmd.sh can fail if public IP not available
Merge pull request #2130 from claire921/refactor_healthz_test

Fix healthz test error handling
Merge pull request #2127 from colemickens/patch-1

Add net-tools pre-req to Vagrant instructions
Merge pull request #2116 from erictune/improve_auth_integ

Improve integration test
Merge pull request #2124 from brendandburns/fix

Make endpoints return 400 instead of 500