Basic low-level asynchronous abort functionality

re: upstream issue #120 
I decided to implement minimal functionality first.
abort() method kicks out readers, small changes as needed to mark connection as closed when socket disappears during recv().

This could become full-fledged async_close() in the future, although for my purposes this is enough.