Changes to support streaming - yay for reduced memory usage

There are a number of other pull requests to add streaming support.
We've been using this particular implementation for some time now.

Essentially if the payload object is a Streamed type, set the 'body_stream' attribute of the request, otherwise set the body attr.

The http code calls the 'read' method which already exists on the payload object, and to_s has been aliased to 'read' (so previously the entire file would be read in as a string.  This caused a certain amount of memory pressure for large files... that wasn't good)

Please let me know if there are any issues!

Doug