Separate the ImageCache and ImageDownloadManager to improve design.

We have now ImageCache and ImageDownloadManager as independent components. 
We can use ImageDownloadManager to synchronize the images without request from AsyncImageView.