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.