provider/azure: filter out unsupported role sizes

Not all locations support all role sizes, so we
now query Azure's ListLocations API to check
availability.

Additionally, we have found that creating virtual
networks with affinity groups restricts which role
sizes can be provisioned, presumably because this
restricts the physical hosts which may be used.
We switch to using Location in virtual networks
instead, and filter out D and G series role sizes
in environments with a virtual network tied to an
affinity group. Higher performance A-series role
sizes may also fail, but are only going to be chosen
by users to specify the constraints accordingly
anyway.

Fixes https://bugs.launchpad.net/juju-core/1.21/+bug/1398406
Address review comments
Fix comment
Fix up code to work with old deps
Fixes to work with old gwacl, juju/errors
Merge pull request #1267 from axw/azure-rolesizes-1.20

provider/azure: filter out unsupported role sizes (1.20)

(backport for 1.20)

Not all locations support all role sizes, so we now query Azure's
ListLocations API to check availability.

Additionally, we have found that creating virtual networks with affinity
groups restricts which role sizes can be provisioned, presumably because
this restricts the physical hosts which may be used. We switch to using
Location in virtual networks instead, and filter out D and G series role
sizes in environments with a virtual network tied to an affinity group.
Higher performance A-series role sizes may also fail, but are only going to
be chosen by users to specify the constraints accordingly anyway.

Fixes https://bugs.launchpad.net/juju-core/1.21/+bug/1398406

(Review request: http://reviews.vapour.ws/r/581/)