(#19447) Puppet::FileSystem::File Windows symlink

 - Windows symlink support has been added to exist?, symlink, symlink?,
   readlink, stat, and lstat.  This overrides any usage of Ruby File or
   FileTest classes which are completely borked on Windows.
 - :manages_symlinks feature of the file provider is enabled with a
   check against Puppet.features.manages_symlinks? which checks for the
   existence of the CreateSymbolicLink call in kernel32.dll
 - FFI wrappers for Win32 API calls CreateSymbolicLink, CreateFile,
   GetFileAttributes, DeviceIoControl and CloseHandle added to
   windows/file
   NOTE: The DeviceIoControl method of resolving symlinks was used
   instead of GetFinalPathNameByHandle, which is known to misbehave
   with UNC paths
 - Any tests against :manages_symlinks feature are automatically turned
   on for Windows, increasing test count by approximately 42 new tests
 - Removed a few symlink tests that were confined to any OS other than
   Windows since they must now be adjusted to run on Windows versions
   that we know support symlinks
 - Updated symlink documentation based on ileUtils.symlink behavior