Abstract image upload tool.

Sites need not use the component, but it can be useful to have the common base class for all image uploads.
Add file type methods to mirror SiteAttachment. These are all needed for the common image upload tool.