Spread units across availability zones

Common code for ec2 and openstack, and any
other provider that supports availability
zones similarly.

Two top-level functions are added to
provider/common: BestAvailabilityZones and
DistributeInstances. The former returns the
availability zones with the fewest instances
in the specified group. The latter returns
the set of instances that may be added to
the specified group without reducing the
availability zone spread optimality.
provider/ec2: implement AZ spread

Implement common.ZonedEnviron, and call
the common BestAvailabilityZone and
DistributeInstances functions to implement
automatic availability zone spread.
Merge pull request #55 from axw/provider-ec2-zone-spread

Implement automatic availability zone spread

There are two components to this PR:
 - new functionality in `provider/common` to enable automatic spread of instances across AZs;
 - updates to `provider/ec2` to make use of this common code.

The openstack provider will be updated in a followup.