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...
Add /etc/default/docker support to upstart, too (mirroring sysvinit)
Change crypto export notice to meet Debian requirements
- Added a doc about Links and Container Naming
- Improved documentation and typos fixing (Thanks to @jamtur01)