(PUP-1389) ReplaceFile to FFI / move wide_string
Puppet::Util::Windows::File.replace_file now calls FFI to
replace files in place on Windows.
Puppet::Util::Windows::File.wide_string has now been moved to
Puppet::Util::Windows::String.wide_string.
This moves wide_string to lib/puppet/ubilt/windows/string.rb,
adds specs concerning different encodings.
In addition, we've removed Windows::API::WideString usages from
everywhere it was found as it is known to cause issues with Windows 2012.
Puppet::Util::Windows::Process.lookup_privilege_value in particular was
changed to use LookupPrivilegeValueA (ANSI) as we control the privilege name
being passed to it.
Paired with Josh Cooper <josh@puppetlabs.com>