agent: use harpoon-supervisor

The primary goal of this PR is to get harpoon-agent using the new harpoon-supervisor instead of harpoon-container.

With that in mind, I've attempted to limit the changes (behavioral, code) to the agent; we already have other issues which can address this (e.g., #8 and #54), and it would be nice to have all new code using the supervisor sooner rather than later.

Implements #48.
It is. From `supervisor.Start()`:

``` go
  // Wait on the command to prevent zombies, and send exit status on exitedc in
  // case it exits before we can connect.
  go func() { exitedc <- cmd.Wait() }()

  rwc, err := s.connect(path.Join(s.rundir, "control"), exitedc)
```

`connect` docs:

``` go
// connect waits for controlPath to exist and be connectable, or an error to be
// sent on exitedc.
```

and tested:

```go
func TestSupervisorConnectEarlyExit(t *testing.T) {
	var (
		s         = &supervisor{}
		errExited = fmt.Errorf("exited")
		exitedc   = make(chan error, 1)
	)

	exitedc <- errExited

	if _, err := s.connect("/tmp/noexist", exitedc); err != errExited {
		t.Fatalf("expected connect to return errExited, got %v", err)
	}
}
```