Refactor utility `MkBuildContext` to the more generic `archive.Generate`

This facilitates refactoring commands.go.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
Move remote api client to api/

This moves `commands.go` out of the core and into `api/client.go`

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
Remove duplicate function displayablePorts

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
api/container.go: an API-specific representation of a container

This breaks the dependency from the remote API implementation to the
internal representation of a container. Instead it uses its own partial
representation of a container, with only required fields.

* This preserves reverse-compatibility with all past implementations of the remote API.

* This clarifies which fields are guaranteed to be present in a response
	A docker remote api server *may* return more fields in a Container
	object, but their presence and semantics are not guaranteed and should
	not be relied upon by client implementations.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
[SKIP] api/common.go: code shared by the server and client implementation of the Docker remote api.
WIP reorganize docker binary around engine and plugins
[SKIP] Load builtins dynamically.
Call the correct jobs in legacy mode
WIP add bridge and daemon builtins
WIP print defaults if there are no arguments
WIP in legacy client mode, call plugin 'restclient'
WIP fix mflag crash
WIP: cleanup opts parsing in main
WIP expose REST client as a job
[SKIP] Engine.ParseJob: create a new job from a shell-like text command.
[SKIP] Engine: register builtin command 'commands' to list all dynamically registered commands.
[SKIP] Engine: clearer job error reporting

* Job.Error and Job.Errorf always print a newline.
* Avoid redundant prefixing of error messages.
restserver: print messages on the job output instead of stdout
Improve and simplify the docker binry.

* Disable engine logging by default: no more noise on stdout.
* Code cleanup: use Engine.ParseJob to parse plugin commands.
* Allow no command argument. For example to test plugin commands.
merging work for moving the client to engine jobs with the most recent from upstream master