added option to allow for streaming large files

Adds an option to stream large files without loading them into memory
The only part that leaves me hesitation is returning nil. I get wanting to stream, but nil feels odd. Is it really nil or just a response object that is faking nil?