generate fake backend via counterfeiter
refactor grace time/'container not found' tests
generate connection interface
rework Run/Attach interface

* stdin/stdout/stderr are done via io.Readers/io.WriteClosers, rather than
  everything going over one channel
* Env is now a simple []string, just to be a bit more like exec.Cmd, which
  also tries to be a OS-agnostic interface, despite K=V being 'Unixy'
* the attach/run API calls are now hijacked HTTP connections, so that stdin
  may be sent across the wire later
* rather than consuming the full stream until a payload with an ExitStatus is
  detected, the caller can call process.Wait() to block until it exits, which
  will return you its exit status.
* an 'error' field has been added to ProcessPayload to signify .Wait() failing
  server-side. this will bubble up to the client, which will return an error
  on its respective .Wait().
client sends stdin payloads over the connection
server passes stdin payloads to backend

closes the stream when a Stdin payload is received with no data
remove extraneous TODO
remove dead EnvironmentVariable struct
Stdout/Stderr are no longer io.Closers

this actually ended up being inconvenient in many places. a very common use
case is emitting logs over a persistent connection; having that connection
close after the process exits is pretty inconvenient. it also assumes you have
an io.Closer in the first place.

this also brings it yet closer to *exec.Cmd
Merge branch 'run-ng'

Signed-off-by: Alex Suraci <asuraci@pivotallabs.com>

Conflicts:
	client/container_test.go
	server/request_handling.go
	server/server_test.go