Replace image assets

Makes it possible to change the file a asset points to. Only enabled for ImageAssets.

This makes it possible for other objects than AssetAssociations to be added as usages to Assets. This is needed so a asset can bust the cache for its usages it is updated.