codec.c:
- Let va_arg handle grabbing a struct from the argument line, don't
  assume we know how the ABI works (the assumption made before is
  false for Windows AMD64..)

sasl.c:
- Now that we assume (in codec.c above) that a struct is passed, don't
  assume that such a struct can be passed by independent members, just
  pass the struct.

For reference: Win AMD64 passes structs / aggregates by a pointer to
that aggregate rather than by individual members of the aggregates (eg.
it doesn't memcpy the aggregate directly into the argument list like
on most platforms.) va_arg on Win AMD64 is smart enough to recognize
and handle this, so let it recognize and handle it.
openssl.c:
- S_ISDIR is not available on win, bitselect against _S_IFDIR directly.
util.c:
- _tcsnicmp() gives trouble when not assuming we compile with unicode
  disabled - use _strnicmp() for case insensitive char* comparison
  instead.
timewin.c/h:
- Include WinSock2 before windows.h so windows.h does not revert to
  using the old winsock.