Ruby 2.0 compatibility

Refactored the `read` method to bring it in line with the `IO#read` spec and
make it compatible with `IO.copy_stream`. Before this it hanged indefinitely
and caused various socket IO write errors in Net::HTTP and 
net-http-persistent.