## Bug description
I am trying to use the RESTful API to be able to built on the `posthog-js-lite`-package by adding the `decide`-endpoint only when I tried to call this endpoint in Paw I kept getting 500 Internal Server Error. After a few hours of staring at what could be the problem I noticed I was sending invalid JSON as Base64 string.

Encoded: `eyJ0b2tlbiI6IFRva2VuSGVyZSwgImRpc3RpbmN0X2lkIjogMTc0NTYyNWM2MDUxOTgtMGIwZWZkY2Y2ZjJjOGEtMWU0ZDMyMWEtMWVhMDAwLTE3NDU2MjVjNjA2ZGNkfQ==`
Decoded: `{"token": TokenHere, "distinct_id": 1745625c605198-0b0efdcf6f2c8a-1e4d321a-1ea000-1745625c606dcd}`

Note that I forgot to properly quote the string values of the properties `token` and `distinct_id` 

## Expected behavior
The API shouldn't fail with status code 500 but instead returning something like 400 or 422 to indicate something is wrong with my request instead of throwing confusing 500.


## How to reproduce

1. Run the `curl` command:
```
curl -X "POST" "https://app.posthog.com/decide/" \
     -H 'Origin: https://localhost:5000' \
     -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.44' \
     -H 'Content-Type: application/x-www-form-urlencoded' \
     --data-urlencode "data=eyJ0b2tlbiI6IGFwaV9rZXksICJkaXN0aW5jdF9pZCI6IDE3NDU2MjVjNjA1MTk4LTBiMGVmZGNmNmYyYzhhLTFlNGQzMjFhLTFlYTAwMC0xNzQ1NjI1YzYwNmRjZH0="
```
2.  Notice 500 is returned

## Environment

- PostHog cloud or self-managed?: cloud
- PostHog version/commit: latest cloud version

posthog/api/decide.py
return json.loads(
        base64.b64decode(data.replace(" ", "+") + "===")
        .decode("utf8", "surrogatepass")
        .encode("utf-16", "surrogatepass")
    )
def feature_flags(request: HttpRequest) -> List[str]:
    if request.method != "POST" or not request.POST.get("data"):
        return []
    data = _load_data(request.POST["data"])
    team = Team.objects.get_cached_from_token(data["token"])
    flags_enabled = []
    feature_flags = FeatureFlag.objects.filter(team=team, active=True, deleted=False)
    for feature_flag in feature_flags:
        if feature_flag.distinct_id_matches(data["distinct_id"]):
            flags_enabled.append(feature_flag.key)
    return flags_enabled
def parse_domain(url: Any) -> Optional[str]:
    return urlparse(url).hostname
@csrf_exempt
def get_decide(request: HttpRequest):
    response = {
        "config": {"enable_collect_everything": True},
        "editorParams": {},