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...
Improvise documentation for builder.rst / VOLUME command
thankyou @tomdz - I forgot about URL based ADDs
Merge pull request #2691 from SvenDowideit/add-instruction-path-limitations

except URL-based ADDs
Merge pull request #2445 from alexlarsson/fix-shared-root-from-dm

Fix lxc start for shared root filesystems
Fix the brittle errorstring-to-httperror recognition code which in turn is required by autopull (the client issues a pull if container creation returns 404)
Merge pull request #2704 from shykes/fix-auto-pull

Fix the brittle errorstring-to-httperror recognition code
Merge pull request #2690 from codevin/master

Improvise documentation for builder.rst / VOLUME command
Make docker build return exit code of build step

If a command during build fails, `docker build` now returns with
the exit code of that command.

This makes it necessary to change the build api endpoint to
return a json object stream.