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 
It will be more `go-style` if you `return nil` here and `return ErrPortMappingFailure` below.