Add automatic dependency analysis for Go programs
Switch to socketpair instead of binding

Instead of binding a Unix socket and having the client connect, simply
create a socketpair in the client and launch the daemon.

This removes all the need for ugly fd-based synchronization.
Factor out common code into a util package