Low-level fd listening support

This is based on the code you sent me to do this, and I've enhanced it a bit.
I'm using this in my program, and well, it seems to work like a charm. If you've any idea or enhancement, tell me!

I've named the function `fd-add'`because I hope in the feature being able to return "something" that could be used to do `fd-remove` to remove the event from the loop. But I didn't go so far for now.