Read data from the stream.
ulong read (
Throws an exception if reading does not succeed.
data = Location to store the data from the stream. Only the data read from the stream is filled in. It is valid for read to return less than the number of bytes requested *and* not be at EOF.
0 on EOF, number of bytes read otherwise.