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)
Merge pull request #2494 from shykes/engine-links

Engine: Minimal, unintrusive implementation of a cleaner Job API.