Split Download into Download and DownloadIntoFile

- Download now writes to an io.Writer
- DownloadToFile works as Download, previously.
- Downloads* methods also return the number of bytes written