Enforced presence of a completedBlock in downloadWithURL:options:progress:completed

This method bails out in case of a missing `completedBlock`. While this makes sense (downloading the image and not doing anything with it is pointless), a client passing a `nil` block is not informed about the mistake.

`NSParameterAssert` validates the input and informs the client about bad usage of the API.
`SDWebImagePrefetcher` has a bigger purpose, it's supposed to prefetch sets of images, not a single image. The `downloadImageWithURL:` methods from `SDWebImageManager` are used to download and process a single image at a time. I think having both of them makes sense.