Use abstract base class for identity driver

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

bp abstract-base-class-drivers

Change-Id: Ifc3b7c158a3a26ca0295e5e133d0108a357b1e37
Remove unused member

keystone.assignment.backends.ldap:Assignment._identity_api was not
used, so remove it.

Change-Id: If4dc5a47c87e9aaf97e3db20a9b813ba32754bea
set user_update policy to admin_required

This changes the default policy.json to prevent users from changing
their own attributes such as password, name, or default_project_id.

Closes-Bug: 1237989
Change-Id: I7de5fff3d72a76b78113e289c57a9fac2096395f
Handle unicode at the caching layer more elegantly

This patchset resolves an issue where in some cases unicode would
cause the cache key generator to raise a UnicodeEncodeError due to
the name/value being outside of the standard ascii character set.
Included is a fix to the cache backend debug code to utilize repr
for passing the keys/values to the logger.

Tests in test_backend provided by chenxiao <chenxiao@cn.ibm.com>

Closes-bug: 1237892
Change-Id: I4df1c9eb6b4a1367defdbb6bcbcd1f1f992348e5
Merge "Use abstract base class for identity driver"
Merge "Remove unused member"
Merge "set user_update policy to admin_required"