Attempt to sanitize the `vasprintf` situation in eglib.

The problem is that on some platforms we call the function
without having provided a prototype for it. This breaks when
building with `-Werror`.

Now we declare it in the private `vasprintf.h` header when
the platform doesn't have a declaration in `stdio.h`. This
should also let us remove the hack in `glib.h` for MSVC.

This may or may not break the build on some platforms; I've
tried on those that I have access to with success. Let me
know if this breaks anything.