Add harpoon-supervisor

`harpoon-supervisor` implements the container supervision design doc (with a few changes, see the [changelog][]).

This PR is structured to ensure the existing agent continues to function. A separate PR will update the agent to use `harpoon-supervisor` instead of `harpoon-container`, and remove the `harpoon-container` subtree.

The details of `container_linux.go` are extracted from `harpoon-container/container.go`, as is `init_linux.go`. The remaining code is mostly new.

Most logic is covered by cross-platform tests; the remainder (`container_linux.go`) was manually vetted on a linux machine.

/cc @peterbourgon @jmyounker 

[changelog]: https://github.com/soundcloud/harpoon/blob/df72745a76441a054b6089e848b9066b24336e59/doc/design/container-supervision.md#changelog
Updates will currently be pushed every 3 seconds while a container is running (to provide metrics).

I am unaware of a case where the control socket can fail silently (outside of an implementation bug in the supervisor). An agent should make no decisions based on the frequency / lack of state updates on the socket.