Allow passing allocation subnet to `docker run`

This is an extension of PR #5829. This PR allows passing a subnet to `docker run` for the IP allocator to pick an address from.

Example usage:

````
docker run --ip 172.42.44.10 myimage
docker run --ip 172.42.44.10/32 myimage
docker run --ip 172.42.44.0/24 myimage
````

This obsoletes #5829 as you can pass a specific IP in addition to a subnet/range.

I haven't added anything in the way of documentation. I wanted to put this out in its current form and make requested changes first.

----

The purpose of this PR is for multi-tenant solutions, where you have multiple products or customers running on a docker host, and you want to be able to add firewall rules per customer. With this, when starting a customer's container, you could pass a subnet, and ensure that their container gets an IP that will be properly matched by a firewall rule or routing policy.
Makes sense. But I think that is just a band-aid solution. What happens if you have a very small set of IPs and it wraps around and gets a recently released one?

I think the right solution is to send out a gratuitous ARP. This is the solution used by load balancers which float an IP between hosts.