Refactor and partly parallelise stack update code

Make this easier to read, and also use co-routines to make it run in
parallel where possible.

Change-Id: Ib37f4c04bd250cb15604ba9adb4cca8a97a2c4fb
Simplify a stack update unit test

Separate out the two resources into separate classes that can be mocked (or
not) independently.

Change-Id: I0d8fc73262256330c0f3e7fd50cc655a12332dc4
Cache snippets in StackUpdate

Change-Id: I1720a7c14edaf1d70b0894c2a4655f101d1c38eb
Pass before and after snippets to template diff

The before template should be passed explicitly, rather than relying on
some state stored in the object.

Change-Id: I5b0af8da2e1df3f6ad3291554cbbc243b51e3fe5
Initial provider templates

this is the "lite" version of blueprint provider-resource
Change-Id: Ife706c932b6b9f0bcf57fb907b369231c226c7c4
Allow a resource delete to be re-attempted.

If a resource is in a DELETE IN_PROGRESS state, and the resource
is deleted again, another attempt will be made to delete the resource.

Fixes bug: #1193975

Change-Id: I615612b4e5f21f2a2cb168f47c33a8f9db7e9e81
Add initial suspend logic to engine

blueprint: stack-suspend-resume
Change-Id: Icf81672534de6b07d938785e659b7f6c733eacc4
Allow JSON values for parameters

Adds a paramter type that accepts JSON objects or strings representing JSON
objects as values.

Implements: blueprint json-parameters
Change-Id: I1ad62df28832a2e07249452133fd9f14995f8e23
Store created nova client in OpenStackClients.

All created clients are stored in the instance of OpenStackClients
which is associated with a stack - this prevents clients from
being repeatedly created throughout the request.

Commit f3fc5c5 introduced a regression which stopped storing the
nova client. This change addresses that regression.

Change-Id: I60088b60f623aac11e473d185f2924d4f4bd1cfe
OS::Quantum::Subnet resource, add enable_dhcp

Add enable_dhcp to the properties schema, since quantumclient
code indicates this is allowed in the body (not only expected
in the response as currently indicated by the docs)

Fixes bug #1194394

Change-Id: I19770b033696ea9a27b6e985a52bf2cfadb16f52
Changes for HOT hello world template processing

This patch contains the base enabling code required for processing a most
simple HOT template ("hot hello world"), so that the template can be
parsed and a stack with a single instance can be deployed.

Contributes to blueprint hot-hello-world

Change-Id: I4f0a04a06fab2f5472cb4481dcdf10d5239d5def
Merge "Add initial suspend logic to engine"
Handle YAML parser error as well

Fixes bug: #1185590
Change-Id: Id561e2769d1f0192dd831450f10e05e8213bffa8
Merge "OS::Quantum::Subnet resource, add enable_dhcp"
Merge "Allow JSON values for parameters"
Merge "Refactor and partly parallelise stack update code"
Merge "Simplify a stack update unit test"
Merge "Handle YAML parser error as well"
Merge "Allow a resource delete to be re-attempted."
Merge "Store created nova client in OpenStackClients."