doc maint: missing dash on the vhost parameter
17667 - run() call in an agent can return incorrect Process::Status

A child process can only be reaped once. Calling waitpid(cid) in a
separate thread creates a race condition between the "main" systememu
thread and the "guardian" thread.  In case the guardian thread reaps the
child process, the $? variable is not properly updated in the "main"
thread and the wrong exist status (of the previous reaped child process)
is returned by systemu.

By calling waitpid non-blocking in a loop we make sure the child process
is always reaped by the main thread unless it was killed before the
child finished.
17667 - run() call in an agent can return incorrect Process::Status

Changelog
maint: fix type in SimpleRPC Intro
20233 - Make filters functions idempotent

This commit makes the filter functions in the rpc client idempotent.
20233 - Make filters functions idempotent

changelog
21104 - reply defaults should be cloned copies from the DDL

Previously we copied the default values from the DDL directly
into the reply structures for the data and agents.

This opened us up to edge cases where the cached copy of the DDL
could be modified for example:

Given a DDL file with:
    output :foo,
           default => "foo"

And an Agent with:
    action x do
       reply[:foo] << "a"
    end

The default in the DDL will become 'fooa'.

We could freeze the default but if the default was a hash or nested
hash we'd need to do nested freezez which might not really solve things
either as not everything supports freezing and there's just too many
edge cases.

We now just use Marshal to deep clone the defaults out of the DDL into
the agent and data replies, this avoid the problem completely at the
expense of some performance
Merge remote-tracking branch 'puppetlabs/master'