Iterator for Poller

While switching EventLoop to iterator instead of indexing, I spotted a
potencial problem: io_process expects list of events not to change during it's
execution, but self is passed as &mut to the handler, making it possible (at
least in theory) to break it. After switch to an iterator, this issue is caught
by borrow checker actually. I switched the code to collect()ing all events into
a Vec as a workaround for now and looking forward to better ideas.