add option to specify a custom SDWebImageDownloader

This commit adds the option to specify a custom `SDWebImageDownloader`. Currently the whole thing use a single `SDWebImageDownloader` instance, it's not possible (or very hacky) to set custom delegate to process certain images. By default the convenient methods still use the shared `SDWebImageDownloader` instance so nothing really changes.

1 change I'm not 100% sure is in `SDWebImageManager.m`. I prefer to have a separate downloader for my manager to avoid the case of 1 queue blocking all the others - so I create a new `SDWebImageDownloader` instance for every `SDWebImageDownloader` instance. Again, for normal use that does not need custom `SDWebImageDownloader`, nothing really changes.