Add specs for read_nonblock with 0 bytes

This adds specs for reading data without any data written and with
something written. This is extract from issue #2327 in Rubinius.
Short circuit when reading 0 bytes

When we read 0 bytes, we only care about the socket being readable,
which is already the case when we enter the primitive. In this case we
don't have to do anything and can return an empty string immediately.

This also mimics the behavior MRI has for this case, since it also short
circuits here.

Related to #2327