Add basic command line interface
Add image directory as an optional positional parameter
Add --recursive option to search DIR recursively
Synchronize Exiv2 calls

Libexiv2 is not thread-safe, at least not all of its functions. Before,
libexiv2 was segfaulting every now and then because it was internally
accessing a shared resource from multiple threads (prepareImage() was
running in multiple threads because of QtConcurrent::mapped).
Synchronize mkpath calls

Making multiple mkpath calls simultaneously on overlapping directory
paths can cause some of the calls to fail if two or more mkpath calls
are trying to create the same directory. This causes the final thumbnail
directory to not get created and hence QImage::save() fails too.

Synchronizing mkpaths() fixes the issue.
Create thumbnail dir only if the thumbnail needs to be (re)created
Cache metadata to speedup loading