Refactor HTTP download code in SwiftClient.download

Encapsulate it in a StreamingDownloader class