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.
I don't see why `completedBlock` is required.

For instance I call this method to start loading images before they are needed. I don't need a `completedBlock` as I won't use the result immediately. Once it is needed however a new request will be made for the same URL and SDWebImage will retrieve the predownloaded image from cache (hopefully) or "merge" the task with the pre download request.