~~~~~~~~~~~~~~~~~~~
- Changed API events to be dictionaries instead of
``types.SimpleNamespace`` objects. The top level of the dictionary
normally contains ``key`` and ``group`` keys used by django-spark and
an additional ``context`` dictionary with arbitrary data.
- Added a new ``Event.objects.create_if_new`` queryset method which
understands event dictionaries.
- Added a new ``spark.spark_generators`` app for configuring spark
generators using Django's administration interface.
- Changed the API contract for sources and sinks: Sources and sinks are
both **NOT** responsible for only letting new events through. A new
``spark.api.only_new_events`` filtering iterator has been added which
only yields events that haven't been seen yet.
- Added a new ``spark.spark_mails`` app for transactional mails.