add windows support

- Windows specific details for dlopen are mentioned in dl.mli

- PosixTypes are mapped to appropriate windows types (if possible) or
 to int64_t. I didn't rearrange module dependecies to avoid breaking
 the interface. But a resorting at the next major release would be nice.

- It currently only works with mingw-w64/gcc , msvc support would
require more workarounds.  Msvc doesn't support many used c99 headers
and features (stdint.h, complex.h, etc.). And only mingw provides
helper functions to simplify the work (e.g. own printf implementation that
supports the usual format strings, unistd.h header)

- flexlink currently doesn't provide an equivalent to
'-Wl,--no-as-needed'.  Forcing flexlink to pass it at the right
position to the mingw-w64 toolchain is non-trivial. I modified the
test cases to avoid this issue on windows.

- test cases run without errors, but it might be not deterministic.
 (e.g. when I've linked it in a different way, dlsym selected another
 sprintf implementation from a windows dll)
I don't understand this definition.  What's `int64_t` doing here?