Update gitignore.
Major refactor.

Handle images without EXIF by falling back to file modification date.