(maint) Fixing build error on windows caused by command with unix path
(#22581) Enable profiling for puppet apply

The profiler was only selected in the networking stack and so didn't let
users test out catalog compilation profiles using puppet apply. This
adds processing of the profile setting in the apply application's setup.
(#22581) Add test for apply profiling

Since apply doesn't need to change profiling while it is running there
is no need for it to explicitly set the profiling to NONE when it is
disabled. It can just use whatever the default for the system is.
However, since the *tests* will run in the same process we need to add a
method to Profiler to clear it back to the original state.
(#4424) Add umask parameter to Exec type

Setting a umask value for execs can be useful when the exec creates files or directories.  Relying on the sytem umask can produce unexected results as it may be different from system to system or just not what the user intends..
(#3946) Add 'post_resource_eval' method to provider classes

This patch allows provider classes to implement a ::post_resource_eval
method, which will be called during the transaction after all resources
have been processed. The purpose is to have a place to peform cleanup
actions for, e.g. connections opened and shared between provider
instances.  This cleanup should be performed whether or not resources
have changed, and even if resources have failures, which precludes the
use of existing cleanup methods (like #flush).
Merge pull request #1906 from zaphod42/feature/master/profile-via-apply

(#22581) Enable profiling for puppet apply
Merge pull request #1899 from jjulien/feature4424

(#4424) Add umask parameter to Exec type
Merge pull request #1851 from badgerious/feature/master/3946_provider_finalize

(#3946) Add 'post_resource_eval' method to provider classes
Merge pull request #1918 from jjulien/fixbuild

(maint) Fixing build error on windows caused by command with unix path
Serialize timestamp in Puppet::Node::Fact using iso8601
(maint) Split to_pson_data_hash into generic to_data_hash component

Split out the parts generating a hash of the object itself from adding
document_type metadata.

Also split out for all resources that generated the hash directly inside
the to_pson method.
Add msgpack serialization format

Use a feature to check for existence of msgpack library and add the
serialization format if it is supported.
Add to_msgpack on format_support and require where needed

Add to_msgpack back to serializable objects. They all have the same
implementation. The issue is nested objects; if an object with no msgpack
implementation is contained in the "data hash" then msgpack will try to call
to_msgpack on it. The alternative is to make sure there are only nested
hashes, but this is not backwards compatible with the pson formats.

Also strips out the internal fact _timestamp from the node object as
that is of type Time and cannot be serialized.
Move Confine out of Provider
Stub Confine at old location

Provide backwards compatibility for code including the old confine
location inside provider.