Factorize the coordinate generation in map_warp.

This fixes several texture test cases failures in Windows due to a bug in the MSVC optimizer,
which was not generating correct code for map_warp with the optimizations enabled.
Fix double-to-float downcast warnings in testtex.
Update testsuite ref image after recent testtex change
Exception safety for Filesystem::last_write_time
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).