Remove the concept of a root dir out of engine

This makes the engine more general purpose so that we can
use it and the job routing functionality for reexec'ing our binary
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)

Conflicts:
	integration/runtime_test.go
Update tests with engine root removal
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
Remove error from engine.New()

Without creating a root there is no way for the engine to return an
error from the new function.
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@crosbymichael.com> (github: crosbymichael)
Merge pull request #5347 from crosbymichael/engine-root

Remove root dir from engine
engine.Installer: a standard interface for "installable" services

Installer is a standard interface for objects which can "install"
themselves an engine by registering handlers.

This can be used as an entrypoint for external plugins etc.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
Engine.Env.Append: append an Env to another.

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
events: fix bug in 'events' timeout

This bug can be reproduced on older versions of Go - it has been tested
on 1.1.1.

Even though we don't support building Docker on that version of Go, I
will sleep better at night knowing that our synchronization and timeout
code is robust enough to work on a version of Go 6 months old.

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

This separates the events subsystem from the deprecated Server object,
and moves it to its own package, which is cleanly installed into
the engine as a builtin.

The events subsystem exposes the following commands on the engine:

* ```events [FROM]``` listens for all matching events and streams them
to stdout

* ```logevent``` publishes a new event to all listeners (events are not
persisted). Events are duplicated across all active listeners.

* ```events_info``` returns information about the events subsystem.

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