Handle invalidate in identity plugins correctly

Returning a True from the invalidate() call means that something has
changed within the plugin and the session should reissue the request and
expect the plugin to authenticate itself.

This means we should only return True if something actually changed,
because re-issuing the request if there was no auth_ref will not change
the outcome.

Change-Id: I012dacc93b1fcaee31d31a49e95db5a38044f211
Distinguish between name not provided and incorrect

When loading from config we need a way to determine if a plugin name was
specified incorrectly or was not specified at all. We need this to
determine if we need to load a fallback plugin.

This is much more in line with how CLI loading works and how it should
have worked initially.

Change-Id: I5547b6e169abc4f1850ff205a8f054a617785c2c
Closes-Bug: #1359618
Allow passing None for username in v2.Password

None must be an acceptable parameter for username in password due to
tests in other libraries, however we should still raise an error if
neither username or user_id is passed. Use and check a sentinel value
instead of None.

Change-Id: Id61cfd1423afa8f9dd964fda278f4fab40887512
Closes-Bug: #1361444
Allow providing an endpoint_override to requests

As much as I'd prefer not to need this functionality there are plenty of
existing clients that we want to have use the adapter that can accept a
bypass argument such that it ignores the service catalog and uses that
URL for all requests.

We therefore need to be able to support similar functionality in our
adapter.

Change-Id: I206705241ff9b84967d0d9c089b4795bcc26b65e
Add version parameter to adapter.

The version parameter was left out of adapter previously because setting
a version number triggers discovery and I felt that it was not ready for
the other services.

However if it isn't set then it won't be used and we may as well
implement it here once rather than have the individual services that do
support it override it themselves.

Change-Id: I707380a01175dc19b59de32cbb8fd2bb123d7335
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
fix typos

Change-Id: Ia850e62fe4c888365f5031cc8b7c7ad526600222
Merge "Allow providing an endpoint_override to requests"
Merge "Handle invalidate in identity plugins correctly"
Merge "Add version parameter to adapter."
Merge "Distinguish between name not provided and incorrect"
Merge "Allow passing None for username in v2.Password"
Merge "Version independent plugins"
Merge "fix typos"