Correctly respect isAutoRead() and make it consistent across OIO/NIO

At the moment we not stop to read from the channel if isAutoRead() returns false. This means if the channel is really busy we may end up reading a lot before stop.