(PUP-2382) FFI typedef for win32_bool / fix User

 - Previously check_token_membership was failing in 2003 spec tests
   due to 2 issues
   - FFI::Pointer::NULL cannot be used in place of our :handle typedef,
     and therefore we must add a new constant of 0 to be used for NULL
     handles
   - FFI defines a :bool as variable width "(?? 1 byte in C++)", while
     Win32 defines a BOOL as int, and is fixed to 4 bytes on x86 and x64
 - Fortunately the bool issue really only bit us in the one spot where
   we were using a pointer to a bool, but by adding a new typedef for
   :win32_bool, all call sites comparing the return value needed to be
   updated for correctness to compare against FFI::WIN32_FALSE
 - A test was added to ensure these APIs are called during spec tests
   on all Windows platforms, and not just 2003
Merge pull request #2691 from Iristyle/ticket/master/PUP-2382-FFI-win32-bool

(PUP-2382) FFI typedef for win32_bool / fix User
(PUP-838) Move FFI code to bottom of process.rb
(PUP-838) FFI Puppet::Util::Windows::Process module

- Remove  dependency on windows/process, windows/handle, and
   windows/synchronize, all part of windows-pr (which is not a gem that is
   currently FFI-ed, even in the latest release)
- Add WAIT_TIMEOUT from Windows::Synchronize
- FFI WaitForSingleObject
- FFI GetExitCodeProcess
(PUP-838) GetExitCodeProcess checks FFI::WIN32_FALSE

 - This adds a fixup after reworking changes related to getting the proper
   boolean on windows.