Do not drop sys_boot

This fixes #2391
Separate a) initialization of the http api and b) actually serving the api into 2 distinct jobs
Engine: 'start' starts the specified container
httpapi: don't create a pidfile if it isn't set in the configuration
Engine: fix a bug which caused handlers to be shared between multiple engine instances
Engine: don't export private testing utilities
Engine: improved logging and identification of jobs
Engine: optional environment variable 'Logging' in 'serveapi'
Hack: simplify the creation of test directories
Engine: fix a bug when encoding a job environment to json
Better error reporting in engine logs and unit tests
Fix main()
Engine: 'create' creates a container and prints its ID on stdout
Remove debug messages
Utils: Add ShellQuoteArguments
lxc: Work around lxc-start need for private mounts

lxc-start requires / to be mounted private, otherwise the changes
it does inside the container (both mounts and unmounts) will propagate
out to the host.

We work around this by starting up lxc-start in its own namespace where
we set / to rshared.

Unfortunately go can't really execute any code between clone and exec,
so we can't do this in a nice way. Instead we have a horrible hack that
use the unshare command, the shell and the mount command...
- Fix the attach examples according to the new attach behavior
- Add the option of adding the user to docker's group and avoid the usage of "sudo" before each command
network: add iptables rules to explicitly allow forwarding

Explicitly enable container networking for Fedora and other distros that
have a REJECT all rule at the end of their FORWARD table.
- Included the sudo alternative as an example_header
Make "docker insert" errors obvious

Closes #1130
See also #1942