Winsock.Types: add Socket (compatible with SOCKET in FFI signatures), and switch to CInt sizes for withSockAddr and withNewSockAddr
IOCP.Windows: remove confusing and not-so-useful failIf variants

Can't use failIfNull in many contexts because the pointer is often
newtype wrapped (maybe we should use real pointers and phantom types
instead).  Can't use failIfZero because system calls like 'bind' return 0 to
indicate success, not failure.
wip: Add IOCP.Winsock
Winsock.Types: fix type discrepancy between sa_family and family parameter to socket()
Add SocketType and Protocol enumerations
Winsock.Types: exclude "default" values (e.g. AF_UNSPEC) from enumerations
Winsock.Types: add iNVALID_SOCKET
IOCP.Winsock: add socket and close
IPCP.Windows: add some error code constants, and pretty-print WSANOTINITIALISED
IOCP.Winsock: export Family, SocketType, Protocol, SockAddr types
Winsock: add initWinsock
Winsock.c: iocp_winsock_init: save error code from being clobbered by cleanup routines
Add binding for ConnectEx, but with no implicit bind or suppression of ERROR_IO_PENDING
IOCP.Bindings: move mystery parameters out of newOverlapped and postQueuedCompletionStatus and into variants
IOCP.Winsock: add aNY_PORT, iNADDR_ANY, and iN6ADDR_ANY
IOCP.Windows: decode several more error types
Winsock.Types: move flowinfo and scope_id record fields to bottom