Changes QueueFile#ringRead to use the offset parameter even when the read does not overlap the EOF.
When using forEach and an ElementReader to read data into offsets of a byte array, the previous ringRead code could repeatedly overwrite the bytes at offset 0, regardless of the offset value passed.
Fixing ElementInputStream read(byte[], int, int) to return -1 when done.
The current implementation of ElementInputStream#read(byte[], int, int) will return 0 when asked to read when no more bytes are remaining. However, the InputStream contract for that method specifies that it should return, "-1 if there is no more data because the end of the stream has been reached."  This difference causes typical idioms for stream copying, which check for a -1 return value, to enter an infinite loop.
Reworking test to remove Executor and fail on zero value from read()
Merge pull request #32 from mfurtak/elementinputstream-read-fix

Changing ElementInputStream read(byte[], int, int) to return -1 when no more data is available
Merge pull request #30 from mfurtak/elementreader-ringread-offset

Changes QueueFile#ringRead to use the offset parameter in all cases