Win32 symlink code refactoring

Merged LRN requested to merge lrn/glib:win32-symlink-refactoring into master

As mentioned in MR !257 (merged), the code needs some straightening.

This MR is mostly about refactoring the code that does readlink() and stat() on Windows, but a couple of semi-related changes also snuck in. One is about GFileType, the other is about st_nlink.

The main commit only changes private API and fixes a corner-case (getting smlink info for a file using a FD). The st_nlink is mostly inconsequential (it's technically a fix, but i doubt many people use that specific part of GFileInfo) and also causes no API changes. The only thing that really affects other developers is the decision to forbid G_FILE_TYPE_SYMBOLIC_LINK value of GFileType on Windows (see the commit message for an explanation).

The diffs are hard to look at (udiffs, at least; maybe side-by-side would look better), i recommend looking at the file before/after the change.

Merge request reports