### Is there an existing issue for this?

- [X] I have searched the existing issues

### Enhancement description

On June 8, 2023, Amazon just announced `support for dead-letter queue redrive via AWS SDK or CLI`

The SDK introduces three new 'tasks' that can be performed against an SQS dead letter queue:
* `StartMessageMoveTask`
* `CancelMessageMoveTask`
* `ListMessageMoveTasks`

LocalStack's SQS implementation should be updated to support these new DLQ redrive operations.

-------------------------

Not surprisingly when I attempting to do this the day after announcement, LocalStack doesn't yet support these operations. Using the latest LocalStack docker container tag of `2.1.0` and the latest Java AWS SDK version `2.20.82`, I attempted to perform one of these new `StartMessageMoveTask` against LocalStack using the following:
```java
StartMessageMoveTaskResponse moveTaskResponse =
      sqs.startMessageMoveTask(builder -> builder.sourceArn(dlqArn).destinationArn(qArn));
```
The container produced the following error message:
```
2023-06-09T17:06:50.098 ERROR --- [   asgi_gw_0] l.aws.handlers.logging     : exception during call chain: Operation detection failed.Operation StartMessageMoveTask could not be found for service ServiceModel(sqs).
2023-06-09T17:06:50.099347340Z 2023-06-09T17:06:50.099  INFO --- [   asgi_gw_0] localstack.request.http    : POST / => 500
```




### 🧑‍💻 Implementation

_No response_

### Anything else?

Relevant AWS announcements and API specs:
* https://aws.amazon.com/blogs/aws/a-new-set-of-apis-for-amazon-sqs-dead-letter-queue-redrive/
* https://aws.amazon.com/about-aws/whats-new/2023/06/amazon-sqs-dead-letter-queue-redrive-aws-sdk-cli/
* https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-configure-dead-letter-queue-redrive.html
if isinstance(val, str) and key.lower() == "SigningCertURL".lower():
        pattern = re.compile(r".*SimpleNotificationService-(.*\.pem)")
        match = re.match(pattern, val)
        if match:
            return match.groups()[0]
def _sns_unsubscribe_url_subscription_arn_transformer(key: str, val: str) -> str:
    if isinstance(val, str) and key.lower() == "UnsubscribeURL".lower():
        pattern = re.compile(r".*(?<=\?Action=Unsubscribe&SubscriptionArn=).*:(.*)")
        match = re.match(pattern, val)
        if match:
            return match.groups()[0]
def _replace_camel_string_with_hyphen(input_string: str):
    return "".join(["-" + char.lower() if char.isupper() else char for char in input_string]).strip(
        "-"
    )
def _log_stream_name_transformer(key: str, val: str) -> str:
    if isinstance(val, str) and (key == "log_stream_name" or key == "logStreamName"):
        match = re.match(PATTERN_LOGSTREAM_ID, val)
        if match:
            return val
    return None
def _route53_hosted_zone_id_transformer(key: str, val: str) -> str:
    if isinstance(val, str) and key == "Id":
        match = re.match(r".*/hostedzone/([A-Za-z0-9]+)", val)
        if match:
            return match.groups()[0]
# TODO: actual and declared type diverge
def _resource_name_transformer(key: str, val: str) -> str: