heat engine : implement metadata_update per-resource

Abstract updates to resource metadata so they are implemented per-resource,
with a generic implementation which is a no-op, since currently the only
resource which needs metadata update via the RPC API is WaitConditionHandle.
This allows resource-specific metadata validation and update logic to be more
easily added.

ref bug 1097813

Change-Id: I094e74b6cd8cb2436f05beed9629fc3c3a34e622
Signed-off-by: Steven Hardy <shardy@redhat.com>
heat engine : Add metadata validation to WaitConditionHandle

Validate metadata before updating the WaitConditionHandle resource
metadata, if we raise a ValueError in response to incorrectly
formatted metadata then the CFN API will map this to a
HeatInvalidParameterValueError, resulting in a descriptive error
response to the malformed request

Change-Id: I6fde27066e9e0eaee97b59a7fbbace09ca620b48
Signed-off-by: Steven Hardy <shardy@redhat.com>