Deleting a non-existent key through s3api's delete-objects should return a valid response..

```
aws s3api delete-objects --bucket my-bucket --delete '{\"Objects\":[{\"Key\":\"my-key\"}]}'
```
Gives...
```
{
    "Deleted": [
        {
            "Key": "my-key"
        }
    ]
}
```

Deleting a non-existent key through s3api's delete-objects on LocalStack returns an error response without any additional information beyond the key.

```
aws s3api delete-objects --bucket my-bucket --delete '{"Objects":[{"Key":"my-key"}]}' --endpoint-url http://localhost:4572
```
Gives...
```
{
    "ResponseMetadata": {
        "HTTPStatusCode": 200,
        "HTTPHeaders": {
            "server": "BaseHTTP/0.6 Python/3.7.5",
            "date": "Fri, 20 Dec 2019 16:02:39 GMT",
            "content-type": "application/xml; charset=utf-8",
            "content-length": "180",
            "access-control-allow-origin": "*",
            "last-modified": "Fri, 20 Dec 2019 16:02:39 GMT",
            "access-control-allow-methods": "HEAD,GET,PUT,POST,DELETE,OPTIONS,PATCH",
            "access-control-allow-headers": "authorization,content-type,content-md5,cache-control,x-amz-content-sha256,x-amz-date,x-amz-security-token,x-amz-user-agent,x-amz-target,x-amz-acl,x-amz-version-id,x-localstack-target,x-amz-tagging",
            "access-control-expose-headers": "x-amz-version-id"
        },
        "RetryAttempts": 0
    },
    "Errors": [
        {
            "Key": "my-key"
        }
    ]
}
```

Deleting an existent key seems to work fine.
if 'marker=' in path:
        content = to_str(response.content)
        if '<ListBucketResult' in content and '<Marker>' not in content:
            parsed = urlparse.urlparse(path)
            query_map = urlparse.parse_qs(parsed.query)
            insert = '<Marker>%s</Marker>' % query_map.get('marker')[0]
            response._content = content.replace('</ListBucketResult>', '%s</ListBucketResult>' % insert)
            response.headers['Content-Length'] = str(len(response._content))
def append_metadata_headers(method, query_map, headers):
    for key, value in query_map.items():
        if key.lower().startswith(OBJECT_METADATA_KEY_PREFIX):
            if headers.get(key) is None:
                headers[key] = value[0]
def fix_location_constraint(response):
    """ Make sure we return a valid non-empty LocationConstraint, as this otherwise breaks Serverless. """
    try:
        content = to_str(response.content or '') or ''
    except Exception:
        content = ''
    if 'LocationConstraint' in content:
        pattern = r'<LocationConstraint([^>]*)>\s*</LocationConstraint>'
        replace = r'<LocationConstraint\1>%s</LocationConstraint>' % aws_stack.get_region()
        response._content = re.sub(pattern, replace, content)
        remove_xml_preamble(response)
def fix_range_content_type(bucket_name, path, headers, response):