Extract email provider responsibilities to adapter

Sendgrid posts with a particular format to their params. As will every
other service. We introduce a manner of transforming all of those params
formats into one consistent, common `params` object via an email service
specific adapter. Right now SendGrid is the only service supported in
this PR but this will provide a common interface for future providers to
be more easily added in.

* "massage" params from provider in controller to common format
* Create SendGrid adapter
* SendGrid adapter now changes how attachments are represented - as an array
* Raise an error if configuration is requesting an adapter that doesn't exist