created a stream uploading variant to put-multipart-object

Hey @noisesmith, I tried to clean up the broken merge in #41, would be great if you could take a look.

I tested this in @noisesmiths fork but deleted the code so this particular version is essentially untested.
I'm trying to setup some testing setup for the project, including a test for this.
Will put that into another PR later.
I don't think we can rely on this behavior to determine the end of the input stream. A blocked input stream might have zero available bytes, yet still be open.