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).