[libsocialcache] Allow multiple models connected to one downloader

Previously, one image downloader could only be used with one model
at a time.  This commit fixes that issue.
It also removes usage of file.map() as it would warn about mapping
greater than filesize being unsupported on some platforms.
Finally, this commit doesn't download full images until they're
requested, to save data and reduce the time it takes to load
thumbnail files by a huge factor.