[SPARK-4107] Fix incorrect usage of FileChannel.read()

`read()` may return fewer bytes than requested; when this occurred, the old
code would silently return less data than requested, which might cause stream
corruption errors.
I checked the source code for all releases back until 0.4.0 (which is the first one Spark supports), and it's true that `is` cannot be null.