Made a clean slate to start on AttachmentSan v2
Did some ground work, love it when a plan comes together! Har har har.
Store the original filename and content type.
Define variants and let them all process when done.
Added a Variant Reflection, yes you heard that right. It holds option logic for a Variant.
Some cleanups.
Some more cleanups.
Added Replay, which allows us to setup custom process chains.
Call the proc that was given to the variant's has_attachment(s) declaration.

Note to self, always use the simple case first.
Revert "Added Replay, which allows us to setup custom process chains."

This reverts commit c776268ace53d764e7d830035b7340c0c428631b.

For now we can do without this.
Dropped the variant reflection. Instead of `options' for a variant, accept a custom class or process proc.
Renamed label to name.
Added test/tmp to .gitignore
Don't hardcode the attachment class and added a TODO about supporting more than one.
Make Variant return a filename which is the variant name, or a hashed version of the variant name and original filename.
Raise an ArgumentError when :filename_scheme is invalid. And made tests green.
Moved :base_path to the attachment_san_options and added :extension.

Use the original's file extension by default, otherwise use the specified one.
Add file extensions and split tokens as per Manfred.
Added :record_identifier as another available :filename_scheme.
Return the original variant from any variant.