Use abstract base class for credential driver

Use the abc module for managing abstract base classes in the driver
layer.

bp abstract-base-class-drivers

Change-Id: Iae65d406bdb65f5ae0fc08f0c1d4b48890eca889
Fix v2 token user ref with trust impersonation=True

The v2 token controller incorrectly checks for a string instead
of a boolean, which results in the wrong user ID (trustee, when
it should be the trustor) when impersonation=True.  So fix the
comparison and tests, adding a test which illustrates the issue.

Change-Id: Ic94f30f2354c9fda20531bb598387368fde8a096
Closes-Bug: #1239303
Merge "Fix v2 token user ref with trust impersonation=True"
Merge "Use abstract base class for credential driver"
Add python-six to requirements

missing python-six minimum version from the requirements.txt
set the min version to 1.4.1, without six recent versions of
keystone fail to start with a critical 'module' object has no
attribute 'add_metaclass' error

Change-Id: Ibfe2c9ec2457d3131dc9b6760e343c36ab8a3c38
Closes-Bug: #1237089