Writeable 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.

This is destined only for master/1.3, it is way too risky and API-breaky to be backported to 1.2 or earlier.