(#19447) Puppet::FileSystem::File#stat / lstat

 - All calls to File class stat / lstat go through the new
   FileSystem::File abstraction so that the implementation can later
   be swapped for a Windows specific one to support symlinks
(#19447) Puppet::FileSystem::File.exist?

 - All previous File and FileTest calls to exist? or exists? go through
   the new FileSystem::File abstraction so that the implementation can
   later be swapped for a Windows specific one to support symlinks
(#19447) FileSystem::File#exist? calls self

 - Existing code uses PathName#exist? which is insufficient for
   symlinks on Windows
WIP: enable Windows symlink support