Fix release from #1860 (hotfix #1934).

- Cron job to send weekly email report is processed multiple times. Review scheduling process to send to only one worker.
- Implement mechanism to ensure each email is sent only once to each recipient.
- Improve the way the async task is processed by creating a separate task for each organization, instead of processing all organizations in a single task.
posthog/email.py
from typing import Dict, List, Optional
import lxml
import toronado
from django.conf import settings
from django.core import exceptions, mail
from django.template.loader import get_template
from sentry_sdk import capture_exception
def inline_css(value: str) -> str:
    """
    Returns an HTML document with inline CSS.
    Forked from getsentry/sentry
    """
    tree = lxml.html.document_fromstring(value)
    toronado.inline(tree)
    
    
    return lxml.html.tostring(tree, doctype="<!DOCTYPE html>").decode("utf-8")
def is_email_available() -> bool:
    """
    Returns whether email services are available on this instance (i.e. settings are in place).
    """
    return bool(settings.EMAIL_HOST)
class EmailMessage: