Support showing extra fields in server list

Adds a --fields argument that sets the fields to display.
ID is always displayed.

Fixes bug #1076473

Change-Id: If3462e6a490ea16da4834a7f40f96b111c9e8227
Make availability_zone in aggregate_create optional

Aggregates do not require an availability zone any more, but in order to
keep the current API, allow for availability zone to be set to None (the new
default value)

Fixes bug 1123468

Change-Id: I216c4fc808a91b0a5f602ee02ae1bca46adb73f4
Fix nova availability-zone-list for admin users

Don't need to convert returned timestamp

Fix bug 1123381

Change-Id: I1dbc82475b44b8d321fffb512083fc7a3b13153d
Expand and improve baremetal API.

This adds an additional command to list the interfaces associated with a
baremetal node.

It also fixes some docstrings and renames the existing interface
commands to be more consistent with the node commands.

Change-Id: Ia6ae383d76adb1c9d632bf69ec22438f1412c66f
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
Issue when gnomekeyring is present but not the current backend

Issue was identified in the review for the previous
patch for bug 1116302. Took this chance to rename _IOError
to a better name (KeyringIOError)

Change-Id: I321353d519eaebea27617702f92ecafe2052eb8e
Merge "Make availability_zone in aggregate_create optional"
Merge "Fix nova availability-zone-list for admin users"
Merge "Expand and improve baremetal API."
Merge "Allow extensions to provide a name when discovered on the python path."
Merge "Avoid doing a deep copy on the availability zone manager"
Merge "Support showing extra fields in server list"