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.
Change SENDGRID_USER to SENDGRID_USERNAME for consistency with existing code
Distinguish between SendGrid API credentials and event handler
credentials

The SendGrid event handler was reusing the SendGrid API credentials. I
decided this was a bad idea and it should have its own credentials, as
they will probably be less secure.
Track events with New Relic custom metrics

For greater insight into what is happening with event processing, track
events and errors with New Relic custom metric under the
Custom/SendgridEvent path.
Correct event format

SendGrid has flattened their JSON format for events. Match that change.