Allow software config at deploy

Adds a method to Instance to allow subclasses to perform additional
updates to heat templates; subclasses should take care to expose
as little or as much as makes sense regarding implementation details.
Additions are added after the Instance Heat fragments are added but
before the stack is pushed.

Also adds a function to HeatSWConfigInstance to add SoftwareConfig
(and StructuredConfig) elements and their Deployments.

Change-Id: I1cd127a32e3115765f8a26886eeeeb5696f686fd
Implements: blueprint software-config-at-deploy-time
Merge "Allow software config at deploy"