dfutil: Include DFCommon.h in source files

Use DFCommon.h instead of specific C library include files, as these can
differ by platform. DFCommon.h contains the appropriate conditional
macros to choose the headers available on the current platform.
Win32: bzero macro that wraps around memset

Windows doesn't seem to have bzero, so we define a macro which just
calls memset with a value of 0.
Don't create iconv object when writing XML

Remove some left-over code that was previously used when we stored all
DOM strings as UTF-16. We were using iconv to convert these to UTF-8 (as
required by libxml). That code was removed ages ago but we were still
creating an iconv converter object and then not using it.
Win32: Work around const typecheck bug in VC++

Visual C++'s type checker doesn't fully understand what the 'const'
keyword means in the context of pointers to pointers, which results in
false warnings when calling free.

In many places in the code, we use arrays of constant strings, e.g.:

    const char **keys = DFHashTableCopyKeys(x);

Here, the keys array itself is modifiable (we can assign to keys[n]),
but the strings *in* the array are constant (we can't assign to
keys[n][m]). After doing something with the array (which sometimes
includes modifying it; in many cases we sort the list of keys), we then
do the following:

    free(keys);

This is fine, because we're freeing non-constant memory. But when
typechecking the call, Visual C++ sees the const and incorrectly thinks
it applies to the array, rather than its contents, and issues a warning.

To avoid these spurious warnings, set a pragma to disable warning 4090
('function': different 'const' qualifiers).