Re-implement Paperclip functionality

Original implementation put the `interpolate` DSL method on the class
instance.
Account multiple versions with interpolations

Previous commit missed the case of having multiple versions with
interpolations. Versions work by creating anonymous subclasses of the
uploader, so we need to share the mappings instance between all of those
without polluting the Paperclip module itself. Fun.