(maint) Error message is different under Windows 2012r2

Previously, the test was expecting a failed logon to raise an error
whose message contained:

    unknown user name or bad password.

This is correct in 2008r2 and earlier, but it appears Windows 2012
changed the error message to be:

    The user name or password is incorrect.

This commit updates the test to not be sensitive to the message
text. Instead we verify that the exception contains the correct Win32
error code (ERROR_LOGON_FAILURE).
(maint) Mark taskscheduler provider tests as pending on ruby 2

The taskscheduler provider tests don't pass on Windows and ruby 2,
because the underlying win32-taskscheduler gem does not work on x64.

This commit marks the tests as conditionally pending. The tests will be
re-enabled when PUP-2881 is implemented.
(maint) Mark eventlog tests as conditionally pending on ruby 2

Previously, the tests would fail on ruby2, because under ruby 2 we are using
a newer win32-eventlog gem, whose constants are in a different namespace than
the version of the gem we are using for ruby 1.9.

This commit marks the tests as conditionally pending when running under Windows
and ruby2. The tests will be re-enabled when PUP-2889 is implemented.
Merge pull request #2803 from hlindberg/PUP-2833_all-types-are-any

(PUP-2833) Make all types inherit PAnyType
Merge pull request #2846 from joshcooper/maint/master/ruby2-conditional-pending

Mark failing specs as pending on windows and ruby 2 x64
(PUP-2902) Change error message when attempting to collect classes.

An attempt to collect classes led to an error message that said
that 'class' is not a known resource type (in a way that can be
misinterpreted).

This commit make the error message specific, and clear.
(PUP-2881) Remove taskscheduler's Windows::Error

 - Don't mixin windows-pr code for error handling.
 - Rely on Puppet::Util::Windows::Error which is error code aware
 - Update error messages to be standardized, always mention HRESULT
   where applicable
 - Remove unreachable error message code (redundant pITask.nil? check)
(PUP-2825) Refactor Ruby[type_name] type to Runtime[ruby, type_name]

This changes the type Ruby[class_name] to the more generic
Runtime[ruby, runtime_type_name] to avoid squatting on open
set of names for potential runtimes which may clash with managment
of the same runtime via a Puppet class or define.

After this change, all references to Ruby[name] should be replaced
with Runtime[ruby,name].
(maint) Clean up documentation

This has one substantive change: removing a reference to RubyType and
replacing it with RuntimeType. All of the other changes are simply
formatting comments to 80 character widths.
Merge branch 'pr/2805'

* pr/2805:
  (maint) Clean up documentation
  (PUP-2825) Refactor Ruby[type_name] type to Runtime[ruby, type_name]

Closes #2805
Merge pull request #2847 from hlindberg/PUP-2902_collect-class-is-error

(PUP-2902) Change error message when attempting to collect classes.
(PUP-2881) Remove taskscheduler's Windows::Unicode

 - Use read_arbitrary_wide_string_up_to helper on FFI::Pointer to read
   wide strings from pointers instead of using windows/unicode
 - Use wide_string helper from Puppet::Util::Windows::String instead of
   multi_to_wide helper from windows/unicode
 - Ensure that we don't error trying to read strings from empty pointers
(PUP-2881) Add FFI require to taskscheduler
(PUP-2881) Replace taskscheduler's COM with FFI

 - Remove Windows::COM definitions found in windows-pr from the
   taskscheduler code.
 - FFI calls to CoInitialize, CoUninitialize, CoCreateInstance,
   CoTaskMemFree
 - With calls to CoTaskMemFree made as FFI calls, pass pointer instead
   of it's address
 - Add new HRESULT and LPUNKNOWN definition to api_types
 - NOTE: FFI::MemoryPointer.from_string appends an extra NULL byte to
   the GUID values, allocating 17 bytes instead of 16, which is OK here
   as the underlying API call to CoCreateInstance ignores the stray byte
(PUP-2857) Add a type for default expression called Default.

Before this change, the special value produced by a default expression
was treated as a Ruby['Symbol'] (later changed to Runtime['ruby',
'Symbol']). This commit changes this to produce an instance of a
new type called Default.

The Default type is an Any, but is not assignable to anything else.

This also removes the inference of :undef to PNilType (a.k.a Undef
in the Puppet Language). The reason for this, now that :undef is
never used by the evaluator. Thus, if someone were to return :undef, or
have it in a data structure, the type calculator would falsely
inferr it as an Undef / NilType. Now, instead, it will be inferred
as a Runtime['ruby', 'Symbol'] and this makes it more clear to
a user that they leaked an :undef in error.

As a consequence several tests that used :undef needed to be changed.
(maint) Don't try to set expectations on $CHILD_STATUS

Previously, executing bundle exec rspec spec/unit/util/execution_spec.rb
would fail on windows with an rspec error:

    unexpected invocation: nil.==(/error message/)

The issue first appears in commit f41800a. I believe because before
f41800a, facter would evaluate the certname fact, executing `hostname.exe`
prior to executing the rspec example. As a result $CHILD_STATUS was never
nil when the test executed.

But starting in f41800a, $CHILD_STATUS may be nil as can be seen by the
rspec output:

    expected exactly once, invoked once: nil.==(0)

Since the object we are trying to set an expectation on is global and
sometimes doesn't exist, this commit creates a private method for stubbing
and setting expectations on the $CHILD_STATUS.exitstatus
Merge pull request #2849 from joshcooper/maint/master/mysterious-child-status

(maint) Don't try to set expectations on $CHILD_STATUS
(PUP-2885) Remove timeout around entire plugin sync operation

This removes the timeout around the entire plugin sync. With the
default setting of configtimeout to 2min, this means that the entire
sync must be performed within this time. This conflicts with the
individual timeouts for connecting and reading and may cause that a
perfectly valid operation is timed out in the middle of productive work.
Merge branch 'ticket/master/PUP2889-eventlog'

* ticket/master/PUP2889-eventlog:
  (PUP-2889) Remove dependency on win32-eventlog constants
Merge pull request #2818 from hlindberg/PUP-2857_add-default-type

(PUP-2857) Add a type for default expression called Default.