User-defined Metadata for ASG & SWF AutoDeployment

This change threads a new parameter through from all the places ASGs are built. `userMetaData` is a map of strings that can be defined during REST API calls, either to ASG creation, nextGroup, or autodeployment. In its default implementation, it does nothing, merely threads it through to the `LaunchTemplateService` and embeds it inside the `LaunchContext` to be accessed by userdata plugins. Once inside the LaunchContext, it's available for extensions to `AdvancedUserDataProvider`.

## Our use case
Our shop doesn't use AMIs for versions yet. However, we love sequential ASGs and autodeployment flows with judgement steps and use them daily at the tradeoff of not specifying a particular artifact ID (always latest). Each deploy we need to pass through an artifact ID for our base AMI to fetch, especially for fast rollbacks.

This change allows us to write an `AdvancedUserDataProvider` that adds all of the `userMetaData` KV pairs to the map of properties the `PropertiesUserDataProvider` normally writes. This way, we can pass in `APP_REVISION` as an environmental variable and our AMI can pull the proper artifact.