Added the ability to stream data using ``cp``.

This feature enables users to stream from stdin to s3 or from s3 to stdout.
Streaming large files is both multithreaded and uses multipart transfers.
The streaming feature is limited to single file ``cp`` commands.

You can look at some of the documentation changes to see how to run the commands.
Here is a synopsis:
For uploading a stream from stdin to s3, use:
``aws s3 cp - s3://my-bucket/stream``

For downloading an s3 object as a stdout stream, use:
``aws s3 cp s3://my-bucket/stream -``

So for example, if I had the object ``s3://my-bucket/stream``, I could run this command:
``aws s3 cp s3://my-bucket/stream - | aws s3 cp - s3://my-bucket/new-stream``

This command would download the object ``stream`` from the bucket ``my-bucket`` and write it to stdout.  Then the data in stdout will be piped to stdin and uploaded from stdin to an object with the key ``new-stream`` in the s3 bucket ``my-bucket``.

cc @jamesls @danielgtaylor 

What if a non-seekable stream is passed? Should the call fail?