provider/openstack: implement AZ spread

OpenStack counterpart to #55

Fixes https://bugs.launchpad.net/juju-core/+bug/1183831
I can call it BestAvailabilityZoneAllocations if you think that'd be preferable. This struct/method thing exists only because the closure I *was* using caused an ICE in go 1.2.1.