Enable download of streamOptimized file-like

Adds a new function download_stream_optimized_data, that facilates the
transfers of stream-optimized file data obtained via additional
processing of the data from the image server.  One use case for it is
when image is actually an OVA, which is a tar archive containing the
VMDK disk of interest, using roughly the following code flow:

   image_data = image_service.download(context, image_id)
   tar = process_image_data_as_tar(image_data)
   file_obj = tar.extractfile(disk_name)
   imported_vm = download_stream_optimized_data(context, timeout,
                                                file_obj, ...)

In addition, corrected the FileReadWriteTask to really read in 64k
chunks like it intended to by passing the size parameter to read().
This will prevent the above file_obj's data from being slurped in one
go.

Closes-Bug: #1286708
Change-Id: I85c7f9079c89ba3b65a11741e8b0c8d64f62a3cd