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 
Can be just `return portallocator.ReleasePort(hostIP, m.proto, allocatedHostPort)`