### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

With the latest docker image a boto3 `put_object` call with a non-latin1 key results in a 500.

Quick example, with `localstack/localstack:latest` running in docker-compose at the host `localstack`:
```bash
# Attempt to upload file.
$ python upload_test.py
ClientError: An error occurred (500) when calling the PutObject operation (reached max retries: 4): Internal Server Error
```

Stack track from localstack container:
```python
2022-04-22T20:14:21.148:INFO:localstack.utils.threads: Thread run method <function AdaptiveThreadPool.submit.<locals>._run at 0x7f4228aca700>(None) failed: 'latin-1' codec can't encode character '\u0100' in position 29: ordinal not in range(256) Traceback (most recent call last):
  File "/opt/code/localstack/localstack/utils/threads.py", line 38, in run
    result = self.func(self.params, **kwargs)
  File "/opt/code/localstack/localstack/utils/asyncio.py", line 30, in _run
    return fn(*args, **kwargs)
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 972, in handler
    return modify_and_forward(
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 516, in wrapper
    value = func(*args, **kwargs)
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 596, in modify_and_forward
    listener_result = listener.forward_request(
  File "/opt/code/localstack/localstack/services/internal.py", line 219, in forward_request
    return super().forward_request(method, path, data, headers)
  File "/opt/code/localstack/localstack/http/adapters.py", line 63, in forward_request
    return super().forward_request(method, path, data, headers)
  File "/opt/code/localstack/localstack/http/adapters.py", line 29, in forward_request
    request = Request(
  File "/opt/code/localstack/localstack/http/request.py", line 144, in __init__
    super(Request, self).__init__(environ)
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/werkzeug/wrappers/request.py", line 120, in __init__
    path=_wsgi_decoding_dance(
  File "/opt/code/localstack/.venv/lib/python3.8/site-packages/werkzeug/_internal.py", line 153, in _wsgi_decoding_dance
    return s.encode("latin1").decode(charset, errors)
UnicodeEncodeError: 'latin-1' codec can't encode character '\u0100' in position 29: ordinal not in range(256)
```

### Expected Behavior

On version `0.14.2` the `put_object` call completes as expected. File shows up in the bucket normally and can be fetched.

Example with same test file:
```bash
$ python upload_test.py
{'ETag': '"e99a18c428cb38d5f260853678922e03"',
 'ResponseMetadata': {'HTTPHeaders': {'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-allow-methods': 'HEAD,GET,PUT,POST,DELETE,OPTIONS,PATCH',
                                      'access-control-allow-origin': '*',
                                      'access-control-expose-headers': 'etag,x-amz-version-id',
                                      'connection': 'close',
                                      'content-length': '0',
                                      'content-type': 'text/html; '
                                                      'charset=utf-8',
                                      'date': 'Fri, 22 Apr 2022 20:34:28 GMT',
                                      'etag': '"e99a18c428cb38d5f260853678922e03"',
                                      'last-modified': 'Fri, 22 Apr 2022 '
                                                       '20:34:28 GMT',
                                      'location': '/testbucket',
                                      'server': 'hypercorn-h11',
                                      'x-amz-id-2': 'MzRISOwyjmnupB3D2CD1CB9895A327/JypPGXLh0OVFGcJaaO3KW/hRAqKOpIEEp',
                                      'x-amz-request-id': 'B3D2CD1CB9895A32',
                                      'x-amzn-requestid': 'Q5CQSHL76V5GF8KJ6V71AKDCFDHRKCTV8WUI00W02WWYNP96GFDJ'},
                      'HTTPStatusCode': 200,
                      'RequestId': 'Q5CQSHL76V5GF8KJ6V71AKDCFDHRKCTV8WUI00W02WWYNP96GFDJ',
                      'RetryAttempts': 0}}
$
$  LOCALSTACK_HOST=localstack awslocal s3 ls testbucket
2022-04-22 20:50:53          6 Ā0
$ LOCALSTACK_HOST=localstack awslocal s3 cp s3://testbucket/Ā0 .
download: s3://testbucket/Ā0 to ./Ā0
$ xxd ./Ā0
00000000: 6162 6331 3233                           abc123
```

### 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`)
```yaml
services:
  localstack:
    # image: localstack/localstack:0.14.2
    image: localstack/localstack:latest
    environment:
      - SERVICES=s3
      - REGION=us-west-2
      - ENDPOINT=http://localstack:4566
    ports:
      - "4566:4566"
  # container to run tests
  develop:
    image: python:3.9
    entrypoint:
      - "tail"
      - "-f"
      - "/dev/null"
    environment:
      - AWS_ACCESS_KEY_ID=foobar
      - AWS_SECRET_ACCESS_KEY=foobar
    depends_on:
      - localstack
```
#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

##### Python Test File
```python
# upload_test.py
from pprint import pprint
import boto3
s3_client = boto3.client('s3', endpoint_url="http://localstack:4566")
pprint(s3_client.put_object(Bucket="testbucket", Key = 'Ā0', Body = b'abc123'))
```
##### Test Session
```bash
# Create new test bucket.
$ LOCALSTACK_HOST=localstack awslocal s3api create-bucket --bucket testbucket
{
    "Location": "/testbucket"
}
# Currently empty.
$ LOCALSTACK_HOST=localstack awslocal s3 ls testbucket
$
# Attempt to upload file.
$ python upload_test.py
Traceback (most recent call last):
  File "//upload_test.py", line 5, in <module>
    pprint(s3_client.put_object(Bucket="testbucket", Key = 'Ā0', Body = b'abc123'))
  File "/usr/local/lib/python3.9/site-packages/botocore/client.py", line 415, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python3.9/site-packages/botocore/client.py", line 745, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (500) when calling the PutObject operation (reached max retries: 4): Internal Server Error
```

### Environment

```markdown
- OS: Ubuntu 20.04
- LocalStack: latest
```


### Anything else?

Looks like this started happening after https://github.com/localstack/localstack/pull/5876.
"""Adapters and other utilities to use the HTTP framework together with the edge proxy. These tools facilitate the
migration from the edge proxy to the new HTTP framework, and will be removed in the future. """
from urllib.parse import urlsplit
from quart import request as quart_request
from requests.models import Response as _RequestsResponse
from werkzeug.exceptions import NotFound
from localstack.services.generic_proxy import ProxyListener
from .request import Request
from .response import Response
from .router import Router
class ProxyListenerAdapter(ProxyListener):