Proactor - manage wait flags specific for operations

The proactor had only one set of wait flags for the entire socket.
This works fine for regular socket I/O because only the connect-
and accept operations are exclusive (never occur with any other
operation concurrently) and the read- and write operation use
wait flags that never overlap (POLLIN and POLLOUT respectively).

But - when SSL is used an asynchronous read operation can require
the need to wait for the socket to become writable (POLLOUT) and
correspondingly an asynchronous write operation might require to
wait for the socket to be readable again.

So - with SSL the wait operations for different socket operations
can become overlapping.

This patch here prepares the socket data structures to keep wait
flags separated by the individual socket operations.