gsocket: Improve default UDP behavior on Windows

An ICMP port unreachable will result in a socket error, which is a
really bad default for UDP sockets.
GMain: Replace Windows implementation of g_get_current_time

Use QueryPerformanceCounter instead of GetSystemTimeAsFileTime. Only use
the latter for the starting point. Avoids burning precious CPU-cycles
with GTimeoutSource because of GetSystemTimeAsFileTime's low resolution,
which is 15 ms at best.
Fix declaration after statement
Avoid passing uninitialized sockaddr_storage to WSAAddressToString
Fix conditional G_OS_WIN32 includes
Fix C99isms in GRegistrySettingsBackend
GSocket: Don't bother updating select mask if socket is closed
Don't call WSAEnumNetworkEvents if socket is closed.

Makes Application Verifier happy.
Don't scan for modules if GLib is a static library
Add GWin32Dispatcher for message pump integration

Integrating an external main loop with the Windows message pump is
anything but trivial. This is primarily because DispatchMessage()
may block, leaving GMainContext to starve indefinitely. The most
common example is in a UI application while resizing a toplevel
window.  Windows will in this case, as part of its message handling
when the resize is started, start a nested message pump which processes
messages until the user chooses to let go in order to accept the new
window size.
Fix GStatBuf type on Windows

This aligns the definition with what GIO expects. It breaks the ABI
though.
Embed proxy-libintl

Enabled if configured with `--enable-proxy-libintl`.
autotools: Make it possible to disable building of tests
Add FFI_BUILDING to gobject's preprocessor defines

This should later be fixed in HSBuild instead, which should pick out
defines from Cflags.
Disable Carbon support

We do not want to depend on CoreFoundation, which is too much to ask
when injecting into non-UI Darwin apps.
Tweak msvc_recommended_pragmas.h
Fix warnings reported by MSVC
Add API to support static linking and unloading

When GLib is built as a static library, constructors and destructor
functions are queued up until `glib_[de]init()`. This way the
application may override the heap VTable before GLib starts allocating
memory, which means it is able to release all memory allocated by GLib
without explicit deinit code for every single statically allocated block
of memory. What this means is that only OS handles are left to be
cleaned up, and that's where `glib_deinit()` needs to perform explicit
clean-up.

This is a pragmatic solution to support linking GLib into short-lived
plugins. The goal is to keep this patch as minimal as possible, so it's
easy to keep maintaining it for future GLib versions. (Upstream has no
interest in this use-case.)

Note that `glib_init()` and `glib_deinit()` do absolutely nothing unless
GLib was compiled as a static library.
glib-genmarshal: Call `glib_init()` to support static linking
Add support for naming threads on Windows