Add OS::Heat::SoftwareComponent resource

This patch adds a SoftwareComponent resource for defining
configurations for a software component's different lifecycle
actions.

The current patch only adds the basic code for the resource and
initial test code. A subsequent patch in this chain will add more
validation (beyond basic property schema validation), e.g. to make
sure that not more than one config is defined for one lifecycle
action.

Implements: partial-blueprint action-aware-sw-config

Change-Id: Idd9de7edf3bab99f26911a0d018a1d433381deb4
Enable SoftwareDeployment for SoftwareComponent

This patch enables the existing SoftwareDeployment resource to cope
with the new SoftwareComponent resource, i.e. allow for associating a
SoftwareComponent resource to a server via a SoftwareDeployment.

In case of a SoftwareComponent resource, the SoftwareDeployment
resource will act at each resource action and create a derived
config to be passed to in-instances tools (instead of looking at its
own 'actions' property).

Note: to activate correct processing of SoftwareComponent data on
an instance, an additional os-collect-config plug-in similar to
55-heat-config will be implemented and posted to the heat-templates
repository. 55-heat-config will ignore configuration data with a
'group' property of 'component'.
The new in-instance hook will analyze component configurations,
derive the configuration to be applied based on the current resource
action and then invoke the appropriate configuration hook.

Implements: partial-blueprint action-aware-sw-config

Change-Id: I45d4d373babe0fff9b109cba97ce7ebcb90562df
Enhance SoftwareComponent property validation

This patch enhances the property validation for
OS::Heat::SoftwareComponent beyond what is done with property schema
validation. This allows for reporting additional validation errors
to users.

Implements: partial-blueprint action-aware-sw-config

Change-Id: I512c74341d9271bc07f78149d45d662484241ada
Merge "Add OS::Heat::SoftwareComponent resource"
Merge "Enable SoftwareDeployment for SoftwareComponent"
Merge "Enhance SoftwareComponent property validation"