[feature] Added downloader API

The downloader object that is used by FacebookImageDownloader
is now exposed as a generic object that can be used to download
from any source and update a database to set the cached file.