DFInitOnce: Avoid dependency on pthread/windows.h

Previously, we needed to include pthread.h so that the pthread_once_t
type would be defined, which the compiler would use to determine how
much storage to allocate for a one-time initialisation control variable
(e.g. as used in DFNameMap.c). However, we want to avoid having to
include this header file directly or indirectly in any code outside the
platform module.

To get around this requirement, we now implement a custom one-time
execution function in DFInitOnce. We define the DFOnce type (previously
corresponding to pthread_once_t) as int, and DF_ONCE_INIT (previously
PTHREAD_ONCE_INIT) as 0. In Unix.c (as well as Win32.c) we use a mutex
to control access to the int variable, so we can ensure the test and set
happens atomically, allowing us to guarantee that the function executes
only once.
Move DFErrorSetWin32 to Win32.c

This function was previously prototyped in DFError.h, which required
inclusion of <windows.h> (via DFTypes.h) in order for the DWORD type to
be recognised. To avoid having to include <windows.h> indirectly in all
header files, and because this function is only actually used in
Win32.c, move it there instead.
Fix unused label warning
Move system includes out of DFCommon.h

Instead, only include system headers in C source files.

We still have a few bits and pieces in DFCommon.h to paper over platform
differences. For windows, we need to define snprintf and strasecmp to
their windows equivalents (_snprintf and _stricmp). And the S_ISDIR
macro is missing on Windows so that is still there, but we can probably
use the replacement instead since it's only needed in a couple of
places.

Ideally we want to avoid all #ifdef WIN32 everywhere, and abstract that
in the platform layer. Currently however we need to include <direct.h>
(windows) and <unistd.h> (Unix) in a couple of places since certain
functions like rmdir are defined in different headers in the two
platforms. I'm not sure what the best way to deal with this is, in the
absence of including those in DFCommon.h, but this is only in a handful
of places within the code right now.