Ensured that icon images were saved on upload.

This included a reworking of how all images were handled in the system. The Image class now manages everything about images including saving and reading them. When an image is saved, an icon version is now saved, too.

Closes #356