### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

Message visibility cannot be extended.

```
upping vis 0
upping vis 1
upping vis 2
upping vis 3
upping vis 4
---------------------------------------------------------------------------
MessageNotInflight                        Traceback (most recent call last)
<ipython-input-7-32ca194989e3> in <cell line: 25>()
     26     print('upping vis', i)
     27     # Should not fail.
---> 28     client.change_message_visibility(
     29         QueueUrl=queue_url,
     30         ReceiptHandle=receipt_handle,

/opt/venv/lib/python3.9/site-packages/botocore/client.py in _api_call(self, *args, **kwargs)
    384                     "%s() only accepts keyword arguments." % py_operation_name)
    385             # The "self" in this scope is referring to the BaseClient.
--> 386             return self._make_api_call(operation_name, kwargs)
    387 
    388         _api_call.__name__ = str(py_operation_name)

/opt/venv/lib/python3.9/site-packages/botocore/client.py in _make_api_call(self, operation_name, api_params)
    703             error_code = parsed_response.get("Error", {}).get("Code")
    704             error_class = self.exceptions.from_code(error_code)
--> 705             raise error_class(parsed_response, operation_name)
    706         else:
    707             return parsed_response

MessageNotInflight: An error occurred (AWS.SimpleQueueService.MessageNotInflight) when calling the ChangeMessageVisibility operation: Unknown
```

### Expected Behavior

It should be possible to keep extending message visibility like it is the case in Moto and in real AWS.

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

docker-compose
```
version: "3.9"
services:
  localstack:
    image: localstack/localstack:1.0.0
    environment:
      - DEFAULT_REGION=eu-west-1
      - SERVICES=s3,sns,sqs
    ipc: host
```

#### Client commands 

```
import time
import boto3

client = boto3.client(
    'sqs',
    endpoint_url="http://localstack:4566/",
    region_name='eu-west-1',
    aws_secret_access_key="x",
    aws_access_key_id="x",
    use_ssl=False,
)

queue = client.create_queue(QueueName="some_queue")
queue_url = queue['QueueUrl']

send_response = client.send_message(
    QueueUrl=queue_url,
    MessageBody='abc',
)

message = client.receive_message(QueueUrl=queue_url)
receipt_handle = message['Messages'][0]['ReceiptHandle']

for i in range(100):
    print('upping vis', i)
    # Should not fail.
    client.change_message_visibility(
        QueueUrl=queue_url,
        ReceiptHandle=receipt_handle,
        VisibilityTimeout=3,
    )
    time.sleep(1)
```


### Environment

```markdown
- OS: linux, docker-compose
- LocalStack: 1.0.0 docker
```


### Anything else?

Docs:

> The new timeout period takes effect from the time you call the ChangeMessageVisibility action. In addition, the new timeout period applies only to the particular receipt of the message. ChangeMessageVisibility doesn't affect the timeout of later receipts of the message or later queues.

https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html

Undocumented AWS behaviour: https://github.com/spulec/moto/blob/1bbdbc2e0d6f729ebfcd5cf94cee80bc241bcd16/tests/test_sqs/test_sqs.py#L1622-L1625
queue = self._resolve_queue(context, queue_url=queue_url)
        with self._mutex:
            # FI
            if queue.purge_in_progress:
                raise PurgeQueueInProgress()
            queue.purge_in_progress = True
        # TO
        try:
            while True:
                queue.visible.get_nowait()
        except Empty:
            return
        finally:
            queue.purge_in_progress = False
    def set_queue_attributes(
        self, context: RequestContext, queue_url: String, attributes: QueueAttributeMap
    ) -> None:
        queue = self._resolve_queue(context, queue_url=queue_url)
        if not attributes: