Remove threading from IO#read

Hardcoding threading and loop into IO#read could limit its usage.
Instead, simply read a single line at a time. This will allow
flexibility within IO#read instead of expecting it to spawn and
handle a thread. The implementation can then worry about threading.