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...
Make "docker insert" errors obvious

Closes #1130
See also #1942
Add ImageInsert tests
Update release script with proper support for non-*.docker.io bucket URLs
Update release script to move https://get.docker.io/ubuntu/info to https://get.docker.io/ubuntu/ and provide a backwards-compatibility redirect (same for /builds/info)