Writable ImageCache

Extends the ImageCache API with add_file() and add_tile() methods to
give applications the ability to seed the cache with "phantom" files and
app-generated tile data, as well as supply a callback that can
regenerate the pixel data for a tile if it is removed from cache and
then is needed again.