Check whether there is data in the socket waiting to be read with the select system call.

This allows readCursor to take a "block" parameter to specify whether
it should be a blocking call. If not blocking and the cursor isn't
ready to be read, NoDataReady exception will be raised.