Updating download function to use reader

As #271 highlights, we're casting everything into a slice of bytes at the moment - so we should probably switch to a reader. This PR is just my initial thoughts, so feel free to suggest a better approach if anything pops into your head :smile: 
I believe this needs to call `dr.Body.Close()`?