ERROR_WAIT_TIME should be a config option

As discussed at https://review.openstack.org/#/c/112941/
replace the hard-coded timeout value with a config option.

Change-Id: I49ddf254dfe6460626d90cc75f89e798227dfff6
Closes-Bug: #1385014
Add validation constraints on config inputs

This change adds a new property to the StructuredDeployment class to
enable a check on the config inputs. When this property is set to
'STRICT' we compare the inputs to the supplied input_values property and
we raise an exception if the input_values result in any inputs not being
assigned a value.
By default this is disabled.
I did a small refactor of the code adding a couple of extra methods.
Closes-bug: 1334283

Change-Id: If132163bcaf4eee61a9499808ab264e7b7f80cb2
Use RPC directly for software config operations

This change replaces heatclient REST calls with RPC calls when
creating, fetching or deleting software configs.

All resources can now request and RPC client with self.rpc_client()
which will create and memoize an EngineClient instance.

Change-Id: Id23749e672fd4154e3d9986e22b46fc038579d8e
Partial-blueprint: software-config-trigger
Merge "Add validation constraints on config inputs"
Merge "ERROR_WAIT_TIME should be a config option"