WIP: Add EventLoop interface and NIOEventLoop imp