Make execdriver a per container property

This way we can have different (non-default) exec drivers for some
containers.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Move execdriver construction into execdriver/execdrivers

This can't be in execdriver (dependency loop) but should not be
hardcoded inside runtime.go either. So we put it in a subpackage.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Add "foreground" mode for docker run

This is a mode of "docker run" that uses direct forking from the
docker client, meaning that the container is a direct child of the
docker run command (rather than the daemon), and that it directly
inherits stdout/err (and stdin if requested) from the parent of the
"docker run" command.

This is very useful in cases where you e.g. want to run a docker
container from systemd (or other process manager), as we can use the
process manager to e.g. set up cgroups and limits, monitor and
restart, pass in fds for socket activation, etc.

The way this works is that there is a new execdriver, which is used
for forground containers. This container just does rpc calls back to
the "docker run" command, which in turn uses a "real" execdriver and
feeds it whatever data the "fake" execdriver got, but in the context
of the docker run command.

We feed information about the process (exit status, pid, etc) to the
daemon, so it is visible just like any other docker container via the
docker apis.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Add vendored version of github.com/guelfey/go.dbus

We need this to do systemd API calls.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Add systemd.SdBooted()

This is a conversion of sd_booted() from libsystemd to go and checks
if the system was booted with systemd.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
systemd: Add bindings for some systemd dbus calls

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
cgroups: Add systemd implementation of cgroups

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
systemd: Add SetUnitProperties() wrapper

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Add -reuse-unit flag to allow reusing an existing systemd cgroup/unit

This flag, which works only if specified in combination with the
-foreground switch causes docker to not create a new transient unit
for the container, but rather reuse the current systemd unit for
resource limits.

This allows e.g. a systemd unit file to contain:
ExecStart=docker run -f -reuse-unit the-image

And docker will use the cgroup of the foo.service unit, allowing
nice integration with systemd.

Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
Merge pull request #1 from alexlarsson/forking-run-systemd

Forking run systemd