Allow extensions to provide a name when discovered on the python path.

Using novaclient with some extensions via python code, you might have an
invocation like this:

    extensions = shell.OpenStackComputeShell()._discover_extensions("1.1")
    novaclient = Client("1.1", user, apikey, project, authurl, extensions=extensions,
                        endpoint_type=shell.DEFAULT_NOVA_ENDPOINT_TYPE,
                        service_type=shell.DEFAULT_NOVA_SERVICE_TYPE)

If you have an extension like 'myextension.py' in the v1_1/contrib directory, you'll
end up with a very sensible attribute on the resulting novaclient object, i.e.

    novaclient.myextension

If you have a package distributed in the package myextension_python_novaclient_ext,
then it'll automatically be picked up as an extension (awesome!) but the name is not
as intuitive.

    novaclient.myextension_python_novaclient_ext

This patch simply changes this to allow the Extension to provide a name for itself.
The possibility of collisions exists, but is not really any more significant than
before (where you might have different versions of the same package installed in the
system or heck, even a bizarrely named 'myextension_python_novaclient_ext.py' in the
contrib/ directory).

Fixes bug 1058366

Change-Id: Ie68463ffd7a939744e035b20fd50a7dc8da605de
Avoid doing a deep copy on the availability zone manager

When novaclient is in debug mode then the HTTPClient will
configure its logger with a StreamHandler that holds an
instance of thread.lock, which cannot be copied. As a result
running novaclient with the --debug flag will cause errors
and mask real issues being debugged.

Fixes bug 1123561

Change-Id: Idf19d62ff3e5b02b029f9089f403a697164231ac
Merge "Allow extensions to provide a name when discovered on the python path."
Merge "Avoid doing a deep copy on the availability zone manager"