iocp.h, iocp.c: Rename OverlappedTag to OverlappedState
iocp.h: add prototypes for public functions in iocp.c
iocp.h, iocp.c: Don't use union for members

This may make an Overlapped take more bytes, but makes initializing
signalCallback safe if a buggy I/O command constructor does not return
an Overlapped in the O_START state.
iocp.h, iocp.c: make iocp_alloc_cancel return Overlapped* instead of void*

The resulting Overlapped does not need to be extended like we usually
do with iocp_alloc_start.
Add IOCP.Manager (work in progress)