(#19447) Fall back to stat if we don't support symlinks

Previously, when managing a file with a source parameter pointing to a
local file, the file resource and file serving code would try to call
`Puppet::FileSystem::File.lstat`, without knowing if the path referred
to a link or not. In other words, the method can be called on things
other than a link, and shouldn't fail when symlinks aren't supported,
i.e. windows 2003.

We could change all of the callers to check if the path is a link and
then only call `lstat`, but that seemed more risky. This commit just
changes the windows `lstat` method to fall back to stat in the 2003
case.
(#19447) Fully qualify access to ruby `File`

This commit just ensures that we call the ruby File methods, as
opposed to Puppet::FileSystem::File, which is at the same "level" as
this class. It also explicitly requires the windows util code to
ensure there aren't load order issues.
(#19447) Rescue when symlink privilege does not exist

Previously, the process_privilege_symlink? would raise on 2003 instead
of returning FALSE.

Now we rescue the ERROR_NO_SUCH_PRIVILEGE when trying to lookup
SeCreateSymbolicLinkPrivilege.
(#19447) Skip symlink test if provider doesn't support it

Confine the tests to when the provider supports symlinks.