allow use of custom ImageRequests in ImageLoader

This seems like the smallest change that will allow developers to
supply their own ImageRequest class to the ImageLoader without
changing the API. There are several use cases for supplying
custom ImageRequests, including setting custom headers, adjusting
the priority of ImageRequests, and working around Issue #71928.

Change-Id: Ic47452b5f8cada2491a6513cb56f383261c73c3a
Improve DiskBasedCache initial scan performance

Using a BufferedInputStream significantly reduces the time it takes
to initialize the cache. On my Nexus 5 with ~330 files in cache init
time went from ~2s to ~0.5s with this change.

Change-Id: I3dd909e3235583306ff5943f69e3947a275bf968
Signed-off-by: Fabian Frank <fabian.frank.de@gmail.com>
Merge "Improve DiskBasedCache initial scan performance"
Add a public accessor for a Request's ErrorListener.

Add a public accessor for a Request's ErrorListener.

Change-Id: Ifd3b8f818dd0e9db0183f08321043aae7c92c72c
Signed-off-by: Shirish Kalele <kalele@google.com>
Merge "Add a public accessor for a Request's ErrorListener."
Merge "allow use of custom ImageRequests in ImageLoader"
Don't hold onto requests indefinitely.

Move the request into NetworkDispatcher's loop so that the previously
processed request's reference is not held until the next request
comes off the queue.
Merge "Don't hold onto requests indefinitely."