## 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
import base64
import json
import secrets
from typing import Any, Dict, List, Optional
from urllib.parse import urlparse
from django.conf import settings
from django.http import HttpRequest, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from posthog.models import FeatureFlag, Team
from posthog.utils import cors_response
def _load_data(data: str) -> Dict[str, Any]: