ImageCache add_file and add_tile

ImageCache: add_file and add_tile

Previously, add_file opens the file (in the usual way, with an ImageInput created by ImageInput::Create()) the first time it's requested, and retrieves individual tiles as needed -- with errors reported if the file is not found, or a specific tile doesn't exist, respectively.

IC::add_file() lets you pre-emptively add a file entry to the ImageCache, along with a factory function that when called will create an appropriate ImageInput (which thereafter is owned by the cache). Among other things, this would let you make an IC-accessible image that is procedurally generated.

IC::add_tile() lets you preemptively add individual tiles into the cache for a certain file, without needing to be read from its input at all.

Another thing that easily falls out from these changes is that you can add_file() using a generator for a stub (do-as-little-as-possible) ImageInput, and effectively that would give you a writeable IC entry (you can write to the tiles with iterators as well).