Properly Handle Reading Larger Files from GCS

The Google Documentation shows reading GCS files with one read() call
to an open file channel. However on App Engine the read() call may
return fewer bytes then the file contains in which case you have to
call it multiple times until all data is read. Assuming this change
fixes the problem with have with files larger then 8MB, we will submit
a bug report for the GCS/App Engine documentation.

Change-Id: I58d982d0f36932121d5ccb91d0400aabb55c1536