lep: pull based event loop

Just to be clear, I don't want the C callbacks to be called ever.  I don't want to have to provide C callbacks (though I am fine with having to pass in NULL).  I want to be given some sort of data structure when the event happens with enough data to do my own dispatching in the scripting language.

In libuv 1.x the callbacks often will have extra data that's not in the req itself.  I'm not sure how much of this will change in this new world where everything is a req.  But for my use case, I need all the data returned in some sort of union type.  I can then check the type and typecast to the proper type to get at all the data members.  Using either the void* data member or a containerof trick on the req, I can get my data to know where to dispatch to in the scripting language.