RFC: Docker-based development support

### Why build or run OpenShift in Docker?

Building and running on bare metal and on VMs each have advantages and disadvantages. Using Docker for builds and development is useful when bare metal is too limited and VMs are too cumbersome. Here are some of the reasons to use Docker when developing OpenShift:

  * Many of the scheduling, load balancing, replication, and routing features typically only available to multi-machine VM setups become available but without the need for VMs. (Each component is bound to its own routable IP in a flat subnet topology that more accurately resembles a prod clustered deployment.)
  * It's easy to compose and share portable runnable images to implement arbitrary topologies for testing, demos, and development.
  * With warm caches, the build and launch cycle is very close in turnaround speed compared to bare metal development with `hack/build-go.sh`.
  * Docker makes it possible to create integrated, shared development toolkits which are more portable than native scripts and provide a more native user experience than VM tooling. (For example, `origin-build` provides `httpie` to developers with no host requirements beyond Docker, and in a way which easily and closely integrates with both the cluster components and the host OS)

TODO:
- [ ] More extensive testing (also: figure out what's up with the guestbook example)
- [ ] Break up the cmd refactor into a separate commit
- [ ] Clean up the scripts and Dockerfiles

Possibly optional TODO:
- [ ] Add cleanup for k8s containers
- [ ] Make minions with a generator to support N minions
- [ ] More refactoring of cmd (took a crack at method extraction but didn't refactor input handling and duplication)
launch