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 
This should be buffered channel I think. Because if you exit by timeout and process write something to buffer after this - your goroutine will hang forever trying to put value to `errchan`.