`IO.readline` is a blocking call, with no `_nonblock` version. I used `read(1)` to implement a
non-blocking readline, since `Socket#read` already handles that. It also respects the
`:read_timeout`, which is the other reason for this. Using `Socket#readline` to search for the
status-line makes it the first call when reading the response, which broke the timeout tests. But
even the other `#readline` calls should respect `:read_timeout`.

Another problem was the old `socket.read(12)[9,11].to_i` was not raising errors - whether or not
nonblock was set too, since `#read` was returning '' instead of nil. So, the following
`@socket.readline` (used to read the rest of the status line) was always called.
If you're EOF, then that would raise EOFError. But if that line was something else, it might
block. Or simply throw away a header and continue with a response status of `0`, etc...