Add full-featured implementation of the AWS autoscaling API

The base of this PR is the internal Hailo autoscaling library. This introduces many changes, which will be hard to list in full but the summary is as follows: 
- [x] Add all outstanding supported autoscaling methods + tests
- [x] Add pagination to the methods that support it
- [x] Add detailed unit tests to the existing methods
- [x] Refactor the existing methods according to the specs
- [x] Replace the V2 with the preferred V4 signer
- [x] Replace the custom test wrappers with the more sophisticated testutil suite
- [x] Refactor the error handling to match the autoscaling API
- [x] Add userdata support for the Launchconfigs
- [x] Add tags and filters support
- [x] Add the latest autoscaling functionality for Instance Lifecycle Management

New Methods:
* AttachInstances
* CreateOrUpdateTags
* CompleteLifecycleAction
* DeleteAutoScalingGroup
* DeleteLaunchConfiguration
* DeleteLifecycleHook
* DeleteNotificationConfiguration
* DeletePolicy
* DeleteScheduledAction
* DeleteTags
* DescribeAccountLimits
* DescribeAdjustmentTypes
* DescribeAutoScalingInstances
* DescribeAutoScalingNotificationTypes
* DescribeLifecycleHookTypes
* DescribeLifecycleHooks
* DescribeMetricCollectionTypes
* DescribeNotificationConfigurations
* DescribePolicies
* DescribeScalingActivities
* DescribeScalingProcessTypes
* DescribeTags
* DescribeTerminationPolicyTypes
* DetachInstances
* DisableMetricsCollection
* EnableMetricsCollection
* EnterStandby
* ExecutePolicy
* ExitStandby
* PutLifecycleHook
* PutNotificationConfiguration
* PutScalingPolicy
* RecordLifecycleActionHeartbeat
* SetInstanceHealth
* TerminateInstanceInAutoScalingGroup

Refactored Methods:
* CreateAutoScalingGroup
* CreateLaunchConfiguration
* DeleteScheduledAction
* DescribeAutoScalingGroups
* DescribeLaunchConfigurations
* DescribeScheduledActions
* SetDesiredCapacity
* PutScheduledUpdateGroupAction
* UpdateAutoscalingGroup

**Note**: Backwards compatibility has been broken where method signatures did not correspond to the API spec or there were styling issues ( 70% of them ). Regardless the existing library has been less than useful in its current state so this should not be a problem.  :boom: