Zip::InputStream#read(number_of_bytes) should return nil at EOF.

Previously it would return an empty string the first time, then raise on subsequent calls.