Restrict portallocator to Docker allocated ports

Port allocation status is stored in a global map: a port detected in use will remain as such for the lifetime of the daemon. Change the behaviour to only mark as allocated ports which are claimed by Docker itself (which we can trust to properly remove from the allocation map once released). Ports allocated by other applications will always be retried to account for the eventuality of the port having been released.

Fixes #6476.
Agree, but when `hostPort` is 0, `RequestPort` does the job of choosing a (supposedly) free one. I'd rather have a message saying that we failed to bind successively 45153, 45154, .. than 0, 0, ... But I understand your point, there has to be a better way to do this.