Handle closed sockets as an error.
Define the buffered socket can_read method.
We can't receive empty packets any more.
Refactor the receive callbacks.

This allows readahead logic.
Define our own ConnectionResetError for 2.7.
Don't forget to import our ConnectionResetError.
Merge pull request #76 from Lukasa/readahead

Add read-ahead logic.