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.
I changed a lot of the variable names as they were extremely confusing to work with. Some of them were integers, some were IPNet, IP, etc.
I can change the names to something else if desired. Just not the originals please :-)