Add experimental and hacky support for authenticating against Keystone API v3
via OpenStack based drivers.

Notes:

1. Domains are not supported yet
2. Projects are supported by specifying "ex_tenant_name" argument
3. Internal interface is subject to change and will change in the near future
Make get_regions work with v3 auth.
Add utility get_service_types method to OpenStackServiceCatalog class.
Add two missing super calls.
Cloudstack - create_node: add param to specify specific ip_address for default nic plus flake8 & docstring fix

closes #346

Signed-off-by: Sebastien Goasguen <runseb@gmail.com>
Refactor OpenStack identity (auth) code and classes, make it more flexible,
re-usable and maintainableL

* Add new module which handles identity related logic
* (libcloud.common.openstack_identity)
* Add new classes for each identity API version.
* Add additional functionality to class for Keystone API v3
* Add new OpenStackServiceCatalogEntry and OpenStackServiceCatalogEntryEndpoint
  class
* Modify OpenStackServiceCatalog class to store entries in a structured format
  (OpenStackServiceCatalogEntry instances) instead of storing it in an
  unstructured dictionary
* Update all the affected code to use the new classes and methods.
* Fix a bug with the CDN requests in the CloudFiles driver.

Also a add new class for each identity API version and add additional
functionality to class for Keystone API v3.

Backward incompatible changes:

* OpenStackAuthConnection class has been removed and replaced with version
  specific classes and "get_class_for_auth_version" class retrieval function.
Merge branch 'trunk' of https://git-wip-us.apache.org/repos/asf/libcloud into trunk

Conflicts:
	CHANGES.rst
Simplify code, remove outdated comments.
Add list_supported_versions to base OpenStackIdentityConnection class and parse
roles which are assigned to the user which is used to authenticate.
Remove now unused and not needed OpenStackAuthConnection class.
Default variable to None.
Use an enum class for identity endpoint type.
Allow user to specify a default_project_id when creating a user.
Allow user to scope a token to either project or a domain by passing "scope_to"
(and "domain_name") argument to Identity v3 class constructor.
Update __all__ remove variables which have been moved to a different module.
Add support for prettifying JSON response body which is printed to a file
like object when using LIBCLOUD_DEBUG environment variable.
This option can be enabled by setting LIBCLOUD_DEBUG_PRETTY_PRINT_JSON
environment variable.
Use a better variable name ("scope_to" -> "toke_scope").
Rename grant_role_to_user to grant_domain_role_to_user and revoke_role_from user to revoke_domain_role_from_user and also add methods for granting and removing project roles.
Add and use OpenStackIdentityTokenScope enum class.
Fix typos in __repr__.