iocpreactor events do not occur at the time they should

Description

When multiple writes are queued to a Perspective Broker connection,
the success callbacks all occur at the same time.
When using the default select reactor, the events occur as each write succeeds.

Attached are two scripts, pbecho.py (server) and pbechoclient.py (the client)
with the select reactor (iocpreactor commented out) the 'Transfer Done' messages in the client occur when 'Transfer some data' messages appear in the server.

With the iocpreactor, the 'Transfer Done' messages all occur at once when all 4 data transfers are complete.

The problem is in iocpreactor/reactor.py. The doIteration loop fetches an event, and processes the callback immediately. This can result in a self-perpetuating loop if the callback produces more I/O events. The fix is to fetch all events first, then process them. This makes it the same as the selectreactor. I have attached a unified diff made against revision #32813 that fixes the issue. So far I have not been able ot make a simple one-process unit test to show this, I will try later. It is easy to reproduce in two-process tests.