Make Keystone client pluggable

Similarly to how the engine client works, this makes it possible to
switch out the builtin keystone client with a custom - interface
compatible - plugin replacement.

Co-Authored-By: Anderson Mesquita <andersonvom@gmail.com>
Partial-Bug: #1274201
Change-Id: If14ff4b34b90f46d0f468fd669dcc2fdc36c8c97
Add Keystone V2 plugin

This adds the previous Keystone V2 client to be used as a plugin by
clouds that have not upgraded to V3 yet.  This replacement also raises
NotSupported exceptions in methods that are V3 only.

Co-Authored-By: Richard Lee <rblee88@gmail.com>
Closes-Bug: #1274201
Change-Id: I97d3fe7e5ff52250c699c9b470d114e53888ef15