Make `CurlDownloadStrategy` resume aborted downloads

Having `curl` resume aborted downloads has been discussed earlier in #10978, #6194 and other issues, but never resolved. This is an attempt to introduce a way of making `curl` resume downloads. Comments and suggestions are welcome.

* `CurlDownloadStrategy#_fetch` (and the same methods in its subclasses) now fetches the file to a temporary path, and `CurlDownloadStrategy#fetch` moves it to the correct location.
* `Homebrew#cleanup` cleans the temporary files `CurlDownloadStrategy` creates if they're left in the cache.