Add user defined extra capabilities

Provide a mechanism that will allow sys admins who are managing cinder
installations with multiple backends to assign key/value pairs to
backends. The key/value pairs can be used by the capabilities scheduler
to select between backends when requests specify volume types.

For example a sysadmin could specify the key 'service_level' with the
values 'high', 'medium' and 'low' for different backends. The sys admin
specifies the 'service_level' for each backend in cinder.conf as a json
string, for example:

extra_capabilities='{"service_level"="high"}'

or

extra_capabilities='{"service_level"="medium"}'

DocImpact
Implements: blueprint admin-defined-capabilities
Change-Id: I1ee9dcb22b3f097c3f3b2a70b0cb672930407cc9
Merge "Add user defined extra capabilities"