Patch 033 migration to work w/ MySQL 5.6

With MySQL 5.6 setup to use UTF-8 for everything, the 033 migration
will fail. This is because a VARCHAR(256) cannot be indexed in UTF-8
databases. In versions of MySQL before 5.6, this produced a warning and
a truncated, less-useful index. In 5.6 it was changed to an error.

We will reduce these columns further to 64 bytes in the model in a
subsequent fix. For now, we will just create the table with 64 character
columns on new systems, which will allow this migration to work properly
on mysql-5.6. There is no danger of overflow, as 64 chars is what Keystone
uses for them anyway.

Change-Id: I27b9c61828301ba8c392b3d316f656641af753bc
Closes-Bug: #1316646
Remove unused parameter name in validate_value

Previously validate method for parameters uses "name" for raising
specific error during validation in check_* methods. In patch
I4a1dc2e65e7b118347933bdf18aba49c058aa28b this code was replaced on
validate_constraints. However validate_constraints does not use "name"
parameter. So it should be removed.

Change-Id: I278bd7828ca3a27925d024d443a16a7f75fd6937
Unit tests: Check for lost resource after failed rollback

Check that when a new resource is added to a stack during an update and it
is unable to be deleted during rollback, that we do not lose track of it
but rather it remains in the template whence we can later attempt again to
delete it.

Change-Id: I83ebbc16c84561b69f9bdb8e7485de85b695c1b8
Related-Bug: #1330016
Implement swift client plugin

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

Importing swiftclient exceptions from the plugin is an interim
solution until the client plugin mechanism provides a way of
handling client-specific extensions.

Swift is a core project, and python-swiftclient is a dependency,
so the import is now mandatory.

Change-Id: Ib2cff83096639855eaa1e05febbb4b490edd6250
Implement glance client plugin

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

Glance is a core project, and python-glanceclient is a dependency,
so the import is now mandatory.

Change-Id: If61f2510344bf67b7e9aded1dc9d9cedf2426228
Implement neutron client plugin

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

Neutron is an integrated project, and python-neutronclient is a dependency,
so the import is now mandatory. Also any conditional code which skipped
if the neutron client was missing has been removed, since the presense or
absense of an installed neutronclient has no bearing on whether neutron
is installed on a given cloud.

Change-Id: Id9fdc50e80efe78731e21934ed9f2704cc3eb408
Change help text for StructuredConfig.CONFIG property

Current help text 'serialized to the chosen format' is misleading
as it only converts to JSON. Hooks have the responsibility to
convert to the required format and use it.

Change-Id: Ic9df130193982c3a89330931812512e055a49029
Closes-Bug: #1339464
Fix several misspells

Change-Id: I5bdac6ace595eb1ad67e8c3ab8ee34cd986ff167
Removed redundant code in stack preview, create.

The operations performed for stack preview is a proper subset of
those performed for stack create, but the code is repeated.
Avoided the redundancy by creating a method and having it called
from preview_stack and create_stack methods.

Change-Id: I53d9f10913fcb49aa3fdb841b1fc893b8e401e4d
Closes-Bug: #1337718
Fixing a typo

Just a simple fix for a typo in a comment.

Change-Id: Ie5c165b3775601680b28d0e85fee8e4082735ffe
Merge "Implement swift client plugin"
Merge "Fix several misspells"
Merge "Fixing a typo"
Merge "Removed redundant code in stack preview, create."
Merge "Implement glance client plugin"
Merge "Implement neutron client plugin"
Merge "Unit tests: Check for lost resource after failed rollback"
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