fixed a leak + cleanings

the async read context was leaked each time an async callback
removed the fd from the async mux before iomux_close() was called.

If calls to iomux_close() fail, the read_async_input_data() must
take care of releasing the context itself (may need some refactoring
so that actions taken in the async callbacks don't interfere with
the memory management of the read contexts)