(PUP-836) - FFI Puppet::Util::Windows::User

 - LogonUserW, LoadUserProfile, UnloadUserProfile and PROFILEINFO
   have been converted from manually packing params with Win32API.new to
   automatically managed with FFI definitions.
 - Use MemoryPointer where appropriate.
 - To use Puppet::Util::Windows::String as a mix-in, must be included
   earlier in util/windows.rb.
 - Note that wide character LogonUserW is used rather than platform
   varying LogonUser as FFI is unable to use that.  The pointer
   widths of PROFILEINFO vary depending on platform, which is handled
   by using :pointer.  With LogonUserW the string pointed to is always
   wide character, which is properly handled by using wide_string.
(PUP-2382) FFI Puppet feature symlink test
(PUP-2382) Windows file uses wide_string mixin
(PUP-2385) Convert Windows MoveFileEx to FFI
(PUP-2382) Convert ADSI GetComputerName to FFI

  - Add missing error handling for GetComputerName Win32 function
  - Add test that verifies GetComputerName returns a non-empty string
(PUP-840) FFI Win32 API calls in colors.rb

 - Replace WriteConsole / WriteConsoleOutputCharacter calls with FFI
   equivalents
(PUP-2382) No need to require 'Win32API' any more