Basic support for IPv6 addresses

Assign an IPv6 address to a guest, if a (non-auto-generated) IPv6 address is assigned on docker0.

The IPv4 network remains "primary", and determines the assignment on subsequent networks.  Thus, if you get 172.16.42.n,  then you'll get ::n as your IPv6.  So we only need to track the IPv4 assignments.

Likely you'll have to do this:
sudo sysctl -w net.ipv6.conf.all.forwarding=1

If you're using IPv6 neighbour discovery this is also needed (and should probably be done by docker in future, but this requires knowing what the 'external' network device is, which I think would require a docker configuration file):
sudo sysctl -w net.ipv6.conf.all.proxy_ndp=1
sudo ip -6 neigh add proxy <prefix>::2 dev eth0
sudo ip -6 neigh add proxy <prefix>::3 dev eth0
sudo ip -6 neigh add proxy <prefix>::4 dev eth0
...