Implement allocating IPs from CIDR within bridge network 

Fixes #4986

It is similar to openstack nova `--fixed-cidr` and allows to do things like [this](http://goldmann.pl/blog/2014/01/21/connecting-docker-containers-on-multiple-hosts/). And our network engineer very excited about this change :)
Also I've refactored ipallocator a little more.
--fixed-cidr only provides half of the story.I think --fixed-cidr should not set the subnet, only the ip range allocaiton. If we are following openstack's approach, we should use --fixed-range to set the subnet separately from the allocation range. These two combined allow for a great degree of flexibility.