Make the abstraction layer as minimal as possible

It looks like my socket event loop library had a fundamental design problem:

  • It wasn’t just a minimal abstraction over the different socket APIs

    • It also handles dispatching of events to sockets and timers and then we run into a lot of lifetime issues

Let us apply separation of concerns to make this library into the minimal abstraction it should be.