PUP-1681 Stat doesn't expose correct mode on Win

 - An issue was discovered where the values returned from
   Puppet::FileSystem.stat and Puppet::Util::Windows::Security.get_mode
   were not aligning as they should.  The call to get_mode returns
   a mode value that should more correctly express a simulated POSIX
   mode on Windows
 - The stat instance returned from Ruby has been further monkey-patched
   on Windows to add an appropriate mode value using the existing
   lower-level code that reads a files security descriptor.
 - Some tests that were performing special handling of mode values were
   updated now that mode should be more consistent across platforms.
 - In some cases, an existing call to File.chmod was changed to call
   set_mode under Windows.  In the future, our FileSystem abstraction
   should be modified to create an OS-agnostic single point of entry
   for setting mode on files.
Merge remote-tracking branch 'upstream/pr/2350'

* upstream/pr/2350:
  PUP-1681 Stat doesn't expose correct mode on Win

Closes GH-2350