vsphere: Support multiple NIC backings

A bit of background: currently fog supports Network[1], but there's also
DistributedVirtualPortgroup[2] which extends Network.

With this commit create_vm tries to detect if the network is a
DistributedVirtualPortgroup. If it is it will create the appropriate backing
(VirtualEthernetCardDistributedVirtualPortBackingInfo[3]). If it's not it will
fall back to the regular backing (VirtualEthernetCardNetworkBackingInfo[4]).

Known issues:
* It is possible for an administrator to assign network permissions to a
  DistributedVirtualPortgroup[2], but not to the DistributedVirtualSwitch[5].
  In that case you can't read its UUID and it fails with an exception.

[1]: http://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.Network.html
[2]: http://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.dvs.DistributedVirtualPortgroup.html
[3]: https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.device.VirtualEthernetCard.DistributedVirtualPortBackingInfo.html
[4]: https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.device.VirtualEthernetCard.NetworkBackingInfo.html
[5]: https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.DistributedVirtualSwitch.html
vsphere: Allow listing virtual port groups

This has had limited testing and may not be perfect, but in the current
situation loading a DistributedVirtualPortgroup into the model will die
because the backing has no property network.
[rackspace|identity] Correctly populate model from request data.

Previously, the model was being incorrectly loaded from request data. As a
result, the username and apiKey properties were always nil. This fixes parsing
and improves the tests to catch this type of bug in the future.
[openstack|compute] fix get_metadata call
[rackspace|identity] Remove unused get_credentials request.
[openstack|compute] rename meta_hash to to_hash; make it public
[glesys] Consistent naming of attributes
Add initial support for pulling in >100 zones via Zones.each.

Uses the hypermedia links returned by the response body to
determine whether or not there are more results available.
Fix warning
version
[aws|dynamodb] fix port to match https default
closes #1531
reverse version change
Get rid of the extra load() calls.
[rackspace|dns] fix issue in zones.find where results with no links throw exception
[rackspace|compute] Fix typo in attachments model.
[rackspace|compute] Handle malformed API responses.

When deleting a Cloud Network, the API returns a plain text
response even when the Content-Type is set to
application/json. In the event of a JSON parsing error, this
change sets the request body to an empty hash.
[rackspace|networks] Add Cloud Networks requests.
[rackspace|networks] Add networks model and collection.
[rackspace|compute] Update server to use default networks.

Rackspace Cloud Networks uses hard-coded UUIDs for
identifying public net and service net. This defaults the
network array for new servers to use public net and service
net.
[rackspace|compute] Allow custom network on server.

When creating a new server, you can now pass an array of
network IDs to which that server has access. If no networks
are specified, it default to public net and service net.