Add a site level abstract attachment downloader.

This can be reused for all of our sites that use SiteAttachment.