Add a SendWithUs Attachment class.

We should treat files as objects in our code, instead of just strings.
This will support all prexisting behavior but will allow the consumer of
the API to pass in instances of SendWithUs::Attachments.

This fixes several problems:

Problem #1: For users who use rails, uploaded files are stored without
their extension and have a basename that looks like this: RackMultipart20141217-17487-bhp429.

Currently there is no way to override the filename we want users to see,
despite it being provided by ActionDispatch::Http::UploadedFile.

Problem #2: Some users want to be able to just pass in raw data as an
attachment and not actually persist the data to the filesystem. This
can't occur with the code that predates this as it is coupled to the
assumption all attachments will be persisted on disk before being
attachments.

This remedies that by allowing attachments to take a data parameter, if
present the consumer will be forced to provide a filename (as it cannot
be determined from the file path)

Problem #3: SendWithUs is too coupled to the filesystem. This alleviates
some of this coupling by encapsulating all behavior having to do with
attachments into a single class.

Open to feedback.