Resource type implementations for structured software config

StructuredConfig takes configuration as a Map property, which
results in config that is stored and returned as a parsed dict.

This will be used for defining both cfn-init and tripleo software
configuration inline in a template as strucured yaml.

StructuredSoftwareDeployment will transform the config to substitute
{"get_input": "<input_name>"} with the current input values and storing
the result in the ephemeral derived config.

partial blueprint hot-software-config

Change-Id: I8029f469dfc2a77453abdab46c1a69ba317fc7ea
Merge "Resource type implementations for structured software config"