Implement cinder client plugin

This moves the client creation code out of Clients._cinder() into
its own client plugin.

Cinder is a core project, and python-cinderclient is a dependency,
so the import is now mandatory (including the volume_backups import).

Change-Id: I6b937422cd8e20fa620a7e875ae8b4c61e8f9cf8
Convert WaitConditionHandle to use handle_signal

The metadata_update interface does pretty much the exact same thing
as handle_signal, with the disadvantage that it's not exposed via
the native ReST API, so convert WaitConditionHandle to use
handle_signal.

This has the following advantages:
- Provides a step towards native waitcondition resources
- Enables signalling existing waitcondition resources via
  heat resource-signal (e.g the native API)
- Moves towards a standardized model where handle_signal is the
  only supported plugin interface for asynchronous signalling of
  resources.

To avoid breaking any CD folks who may not update heat-engine and
heat-api-cfn at the same time, the existing resource interface is
maintained with a deprecation warning (how long to maintain this
is TBC).

Change-Id: Id7dde1c5f13683950a1cb483ae2ce4d1fbf2a56e
blueprint: native-waitcondition
Refactor waitcondition resources to allow easier subclassing

Rework the WaitCondition resources to define some class variables
which will make inheriting from them to implement native resources
easier.

Change-Id: Icf58185cb172b455c927dfe79763f9bb1c5ffed0
blueprint: native-waitcondition
Add an OS::Heat::WaitCondition resource

Refactor so the existing CFN compatible resource and a new native
resource can share the same base implementation.  It's mostly
cosmetic changes to the interfaces, but note the handle reference
is not expected to be a signed URL for the native resource as
native (non ec2token) auth will be used for the native handle.

Note partial test coverage of the new resource is provided via the
existing tests due to the inheritance, but full coverage will be
added via the patch which implements the matching native handle.

Change-Id: I2bc6cb8313bf576188d5d740dac00ce54cb38f3e
blueprint: native-waitcondition
Merge "Convert WaitConditionHandle to use handle_signal"
Merge "Refactor waitcondition resources to allow easier subclassing"
Merge "Add an OS::Heat::WaitCondition resource"
Merge "Implement cinder client plugin"