Individual plugin CLI registering

Split the functions that load the auth plugins from CLI so that they can
be used on a specific plugin. The intention here is to be able to turn
the existing authentication options in shells into a new auth plugin and
have that be loadable rather than maintain separate paths through the
shells.

Change-Id: I3dd5a8ed183d843246b1add3dfbf591ba4e2f94c
Allow registering individual plugin CONF options

Give plugins some more flexibility in registering there own CONF
options.

Change-Id: Id6d47e59e96b7b42c04cecdd53c13a887f60c75b
Merge "Individual plugin CLI registering"
Merge "Allow registering individual plugin CONF options"
Make auth plugins dest save to os_

If the auth plugin saves into the normal namespace like .user_id and
user_id is an argument of the command then the two argument collide with
each other.

This is fairly common, particularly in keystoneclient's shell.

There is a little bit of a compatibility concern in that the variables
on the returned namespace have changed, however the usage of this
function should be if you use register_argparse_arguments you should
also use load_from_argparse_arguments and that is not changed.

Change-Id: Id1cb0983a1e78661492acd78ad9aa67ff8d49250
Fix handling of deprecated opts in CLI

Deprecated opts are supposed to be accessible via the CLI in a similar
way as they are available via CONF. Currently these values are ignored.

Add CLI flags for all the deprecated opts as well.

Change-Id: If5f23c7b30a0cacda893a5e3150bc6bdb95f3693
Allow unauthenticated discovery

The default state for session requests is that if there is an auth
plugin available then it should include a token in any requests. This is
a problem for cases where it is the authentication plugin itself trying
to do discovery (like in the case of version independent plugins)
because you end up in an infinite loop.

Allow controlling the authenticated parameter on discovery requests.

Change-Id: Ib5ab0a3a30fe79139b7b5dcaae698438281b6d36
Allow providing a default value to CLI loading

Allow users to specify a default value to loading auth plugins from the
CLI so that you can fallback to some default behaviour if the user
doesn't specify a plugin.

Change-Id: I44eb838f7ccc3b377dd1ba53dbb941e973e4a22e
Version independent plugins

A Framework for creating plugins that work across identity versions.
Upon creating a generic plugin the plugin will go and discover what
versions are available on the server and then attemp to construct a
suitable plugin.

Blueprint: version-independant-plugins
Change-Id: If7fed94aaf4636e80a9c3a834cf6c5430f20e489
Make keystoneclient use an adapter

Apart from making keystoneclient follow the same patterns of using an
adapter that we are trying to push onto other clients this severs the
cyclical dependency between managers and the client object.

Change-Id: I49fbd50571f0c1484e1cbc3dcb2159d25b21b1bc
Convert keystone CLI to use auth plugins

Change-Id: I9b343f922c0bc3f460a07ff23ab23c0a373e5622
CLI fixes

Change-Id: I562d50e2b9675dd405eba46265ba143effa4f837