A Fetcher translates data into either an ImageSource or a Drawable.
To accomplish this, fetchers fit into one of two types:
Uses the data as a key to fetch bytes from a remote source (e.g. network, disk) and exposes it as an ImageSource (e.g. HttpUriFetcher).
Reads the data directly and translates it into a Drawable (e.g. BitmapFetcher).