Add platform-specific metadata collectors
Puppet::File_Serving::MetaData was not able to retrieve owner, group
or mode on Windows, because the underlying Ruby File.stat
implementation always returns 0 for uid and gid, and returns either
644 or 444 (the latter for read-only).
This commit wraps File::Stat in platform-specific objects that
delegate to the appropriate object and method. By default, owner,
group, mode, ftype delegate to methods on the normal File::Stat
object. On Windows, we delegate owner, group, and mode to the get/set
class methods of Puppet::Util::Windows::Security.