Process all Sendgrid Events

Extend the Sendgrid event handler to process all events received from
Sendgrid (using the Event Webhook v3 API). This includes email views,
email clicks, unsubscribes, spam reports, and bounces.

The endpoint uses basic auth to provide a bit of protection against
attack. The username and password are set in the SENDGRID_USER and
SENDGRID_PASSWORD environment variables respectively. They default to
sendgrid (both username and password) if not set. When configuring
Sendgrid these parameters must be set as described in the Sendgrid
documentation.

All event processing goes via delayed job to even out load.

If you use Platform's event tracking this can lead to double
counting. There isn't a general solution to this as multiple opens,
views, etc. are valid. However, double counting isn't likely to
make much difference in practice.