- Added `parent_urn` and `subresource_urn` properties to the `CloudWanderResource` class.
- Added new DynamoDB secondary index `parent_urn`
- Fixed bug where subresources were not cleaned up when `write_resource` was called on `CloudWanderer`
- Stripped out DynamoDB record specific attributes which were polluting Secondary Attributes dictionaries.
- Changed `AWSInterface` `get_resources` to expect specific service, resource type, region arguments instead of reusing the arguments from CloudWanderer `write_resources`.
- Added `get_actions` to `AWSInterface` which returns a list of `GetAndCleanUp` objects which pair `GetAction`s and `CleanUpAction`s.
- CloudWanderer's `write_resources` now contains the logic for iterating over each `GetAction`, calling `get_resources` on `AWSInterface` and calling `delete_resource_of_type_in_account_region` on each StorageConnector in accordance with the `CleanUpAction`.
- Added `get_and_cleanup_actions` property to `CloudWandererBoto3Resource` so the responsibility for defining `GetAndCleanUp` objects resides with the resource. This provides maximum flexibility for asymmetric region/resource discovery (like S3 buckets).
- Added `get_empty_service` to `Boto3Services` to minimise the number of unnecessary (and expensive) Boto3 client creations when generating get and cleanup actions.