Fix an issue where already allocated ports will not trigger an allocation error

This is because the `docker-proxy` reexec does not communicate its exit status back to the parent. I have wrapped the `cmd.Start()` call with some stdio communication to facilitate propagating errors.

This IMO is less than ideal. I think we should implement a small protocol for reexec that would allow error propagation.

Also includes @tiborvass's test that now passes. :)

/cc @LK4D4 @crosbymichael @jfrazelle 
I don't think this will work without rewriting the whole thing. I can close the chan on a timeout, and check for a closed chan before I write to it. That'll be in the next version of this patch.