Implementing IPv6 functionality for ipallocator

Closes: https://github.com/docker/docker/issues/6975
Related to: https://github.com/docker/docker/issues/3609, https://github.com/docker/docker/issues/7042, https://github.com/docker/docker/pull/8308

I have extended the ipallocator to support IPv6 addresses and networks and added some tests.

This is the next step to full IPv6 support.
It's pretty confusing that `firstIP` and `lastIP` have different types now. Probably you should just write
```
lastIP  := make([]byte, len(netIP), len(netIP))
```
here and do
```
return netIP.Mask(network.Mask), lastIP
```
at the end.