Make remote API unit tests easier to read and write

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
Update dns and volumes-from docs
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
Merge pull request #5104 from crosbymichael/update-dns-vf-docs

Update dns and volumes-from docs
Merge pull request #5102 from shykes/api-cleanup-tests

Make remote API unit tests easier to read and write
pkg/dockerfile: a simple parser for the original Dockerfile format

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
runconfig.Config can be changed with inline Dockerfile instructions.

This allows using the Dockerfile syntax as a common "scripting" layer to express changes to an image configuration.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
engine.Env.Expand applies shell-style variable expansion on an input string

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
engine.Env.Add: append multiple values for the same key

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
pkg/dockerfile.ReflectorHandler: gracefully ignore unknown instructions (and print a warning)

This makes pkg/dockerfile usable as the reference parser for 'docker build'.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
runconfig.Config.AsScript returns a text representation of the Config in the Dockerfile syntax

This allows easy conversion of a Config object to and from the Dockerfile syntax.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
Replace 'commit --run' with 'commit --change'

```docker commit --change``` allows specifying standard changes to be applied to the
new image. It deprecates the less user-friendly and less stable *commit --run*.

Changes are expressed in the Dockerfile syntax, and can be used  to modify the image
metadata. For example:

```docker commit --change 'WORKDIR /home/bob'``` will commit the image
with */home/bob* as the default working directory.

```docker commit --change 'EXPOSE 80 53/udp'``` will commit the image
with network ports *80/tcp* and *53/udp* marked as exposed.

```docker commit --change 'VOLUME /var/data'``` will commit the image
with */var/data* marked as a volume.

The following Dockerfile instructions can be used as a change:

* ENTRYPOINT
* CMD
* USER
* WORKDIR
* ENV
* VOLUME
* EXPOSE
* ONBUILD

The syntax for these commands is identical in *--change* and in a
Dockerfile. See the Dockerfile reference for a complete syntax reference.

Note that some fields which could be changed directly with the
deprecated ```--run``` can no longer be changed with the new
```--change```. This is by design, for 2 reasons:

1) Not every field in the underlying Config object should be
automatically exposed for modification. This gives us a stable
indirection to control the exact set of allowed modifications.

2) If the Dockerfile syntax does not allow a legitimate modification,
we can simply enrich the syntax, fixing the problem in a unified way
both in Dockerfile and *docker commit*.

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