### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

when executing the commands from this issue
* #5293

specifically the last command: 

    aws --debug --endpoint-url="http://localhost:4566" sqs change-message-visibility --queue-url http://localhost:4566/000000000000/MyQueue --receipt-handle garbage --visibility-timeout 30

i get the following XML response:
```xml
<ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Code>ReceiptHandleIsInvalid</Code><Message>The input receipt handle "garbage" is not a valid receipt handle.</Message></Error><RequestId>RC7Q6J8V0LJ4EN2WQXGANXA2XWRL13D4GN6NVJF1V8UFBAVEO417</RequestId></ErrorResponse>
```
and the following headers:
```python
{
    'Content-Type': 'text/plain; charset=utf-8',
    'Content-Length': '309',
    'Access-Control-Allow-Origin': '*',
    'Access-Control-Allow-Methods': 'HEAD,GET,PUT,POST,DELETE,OPTIONS,PATCH',
    'Access-Control-Allow-Headers': 'authorization,cache-control,content-length,content-md5,content-type,etag,location,x-amz-acl,x-amz-content-sha256,x-amz-date,x-amz-request-id,x-amz-security-token,x-amz-tagging,x-amz-target,x-amz-user-agent,x-amz-version-id,x-amzn-requestid,x-localstack-target,amz-sdk-invocation-id,amz-sdk-request',
    'Access-Control-Expose-Headers': 'etag,x-amz-version-id',
    'Connection': 'close',
    'date': 'Tue, 18 Jan 2022 23:17:17 GMT',
    'server': 'hypercorn-h11',
}

```

this XML has three issues:
1. there's no `<?xml` start declaration
2. the message content is not HTML encoded (`"` should be `&quot;`)
3. the content type is `text/plain`

### Expected Behavior

The XML returned by AWS looks as follows:
```xml
<?xml version="1.0"?><ErrorResponse xmlns="http://queue.amazonaws.com/doc/2012-11-05/"><Error><Type>Sender</Type><Code>ReceiptHandleIsInvalid</Code><Message>The input receipt handle &quot;garbage&quot; is not a valid receipt handle.</Message><Detail/></Error><RequestId>bd34a56b-d17a-552a-b343-ff0b22169609</RequestId></ErrorResponse>
```
with the following response headers:
```python
{
    'x-amzn-RequestId': '3e3ad214-7356-536b-8342-88753f3af4f7',
    'Date': 'Tue, 18 Jan 2022 23:15:56 GMT',
    'Content-Type': 'text/xml',
    'Content-Length': '334',
}
```

### How are you starting LocalStack?

With the `localstack` script

### Steps To Reproduce

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

    PROVIDER_OVERRIDE_SQS=asf DEBUG=1 python -m localstack.cli.main start --host

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

```
aws --endpoint-url="http://localhost:4566" sqs create-queue --queue-name MyQueue
aws --debug --endpoint-url="http://localhost:4566" sqs change-message-visibility --queue-url http://localhost:4566/000000000000/MyQueue --receipt-handle garbage --visibility-timeout 30
```

### Environment

```markdown
- OS: Linux Mint 20
- LocalStack: latest
```

### Anything else?

Not sure this is really the root cause of #5293, but worth investigating and fixing regardless.
"""
    The response serializer is responsible for the serialization of a service implementation's result to an actual
    HTTP response (which will be sent to the calling client).
    It is the base class of all serializers and therefore contains the basic logic which is used among all of them.
    """
    DING = "utf-8"
    # The default timestamp format is ISO8601, but this can be overwritten by subclasses.
    TIMESTAMP_FORMAT = "iso8601"
    def serialize_to_response(
        self, response: dict, operation_model: OperationModel
    ) -> HttpResponse:
        """
        Takes a response dict and serializes it to an actual HttpResponse.
        :param response: to serialize
        :param operation_model: specification of the service & operation containing information about the shape of the
                                service's output / response
        :return: HttpResponse which can be sent to the calling client
        """
        serialized_response = self._create_default_response(operation_model)
        shape = operation_model.output_shape
        # The shape can also be none (for empty responses), but it still needs to be serialized (to add some metadata)
        shape_members = shape.members if shape is not None else None
        self._serialize_payload(
            response, serialized_response, shape, shape_members, operation_model
        )
        serialized_response = self._prepare_additin_response(
            serialized_response, operation_model
        )
        return serialized_response
    def serialize_error_to_response(