### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

Using the `latest` localstack container, when publishing a batch of messages using the new PublishBatch API, if one of the messages has no Subject, then an empty response is returned: `{}`.

### Expected Behavior

`PublishBatchRequestEntry.Subject` is a non-required field, therefore a batch with messages that have no Subject should be successfully published and a valid response should be returned.

### How are you starting LocalStack?

With a docker-compose file

### Steps To Reproduce

Run the following commands:
```
awslocal sns create-topic --name local-test-topic
awslocal sns publish-batch --topic-arn "arn:aws:sns:eu-central-1:000000000000:local-test-topic" --publish-batch-request-entries Id=1,Message="has subject",Subject=subject Id=2,Message="has no subject"
```
The output of the last command is:
```
Unable to parse response (not well-formed (invalid token): line 1, column 0), invalid XML received. Further retries may succeed:
b'{}'
```

The localstack container logs show the following error:
```
2022-01-19T13:58:39.806:INFO:localstack.utils.run: Thread run method <function AdaptiveThreadPool.submit.<locals>._run at 0x7f586ade9160>(None) failed: 'Subject' Traceback (most recent call last):
  File "/opt/code/localstack/localstack/utils/run.py", line 153, in run
    result = self.func(self.params, **kwargs)
  File "/opt/code/localstack/localstack/utils/async_utils.py", line 31, in _run
    return fn(*args, **kwargs)
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 915, in handler
    response = modify_and_forward(
  File "/opt/code/localstack/localstack/utils/aws/request_context.py", line 205, in modify_and_forward
    result = modify_and_forward_orig(
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 555, in modify_and_forward
    listener_result = listener.forward_request(
  File "/opt/code/localstack/localstack/services/edge.py", line 173, in forward_request
    result = do_forward_request(api, method, path, data, headers, port=port)
  File "/opt/code/localstack/localstack/services/edge.py", line 228, in do_forward_request
    result = do_forward_request_inmem(api, method, path, data, headers, port=port)
  File "/opt/code/localstack/localstack/services/edge.py", line 252, in do_forward_request_inmem
    response = modify_and_forward(
  File "/opt/code/localstack/localstack/services/generic_proxy.py", line 555, in modify_and_forward
    listener_result = listener.forward_request(
  File "/opt/code/localstack/localstack/services/sns/sns_listener.py", line 238, in forward_request
    response = publish_batch(topic_arn, req_data, headers)
  File "/opt/code/localstack/localstack/services/sns/sns_listener.py", line 699, in publish_batch
    data["Subject"] = [message["Subject"]]
KeyError: 'Subject'
```

### Environment

```markdown
- OS: MacOS 11.6
- LocalStack: Latest
```


### Anything else?

_No response_
import ast
import asyncio
import base64
import datetime
import json
import logging
import time
import traceback
import uuid
from typing import Dict, List
from urllib.parse import parse_qs, urlparse
import requests
import six
import xmltodict
from flask import Response as FlaskResponse
from moto.sns.exceptions import DuplicateSnsEndpointError
from moto.sns.models import SNSBackend as MotoSNSBackend
from requests.models import Request, Response
from localstack.config import external_service_url
from localstack.constants import MOTO_ACCOUNT_ID, TEST_AWS_ACCOUNT_ID
from localstack.services.awslambda import lambda_api