testing infrastructure, issue #1800: Refactor docker testing using Docker in Docker
Fix build on darwin
Minimal, unintrusive implementation of a cleaner Job API.

* Implement a new package: engine. It exposes a useful but minimalist job API.
* Refactor main() to instanciate an Engine instead of a Server directly.
* Refactor server.go to register an engine job.

This is the smallest possible refactor which can include the new Engine design
into master. More gradual refactoring will follow.
Engine: basic testing harness
Engine: centralize checks for supported architectures and kernel versions
Rename 'GraphPath' to the more logical 'Root'. This does not affect users except for a slight text change in the usage messge
Rename ConfigGetenv to ConfigFromJob
Setup daemon pidfile/cleanup in Server.Daemon() instead of main()
Close sqlite persistent connection on SIGINT, SITERM or SIGKILL
Engine: cleanly log the start and end of each engine job
Engine: Engine.Job() never fails, to mimic the os/exec API (and make usage less verbose)
docker stop sends SIGTERM and SIGKILL, docker kill sends SIGKILL
update RELEASE-CHECKLIST.md to reflect new changes
Fix formatted on build
Merge pull request #2456 from dotcloud/update_release_checklist.md

Update RELEASE-CHECKLIST.md to reflect new changes
Set environment variables using a file.
Fix #2369 by documenting decompression behavior.
Support copying value from env with -e option.
Fixed problem with variables containing \n.

The /.dockerenv file is now a marshalled json array so that environment
variables with \n and other weird values are supported.
Add flags to history, add size flag