19905 - mcollective set timeout header on reply messages

MCollective at present uses real queue named in a temporary fashion to
handle replies this is due to some issues with temporary queues in
ActiveMQ

ActiveMQ is configured to delete unused queues after some time - 30
seconds in our recommended config - but this only works when those
queues are completely empty.

JMS messages have a message time stamp and a message expiry header which
lines up with the creation time in MCollective and the TTL set on the
message object but we never set these headers allowing ActiveMQ to clear
out unconsumed expired messages and so in some cases we find these
temporary queues stuck requiring human intervention.

This commit adds the needed headers allowing ActiveMQ to do proper
housekeeing of its internals
19905 - mcollective set timeout header on reply messages

When publishing messages over RabbitMQ this will set a TTL
on the messages matching mcollective message ttl plus a few
seconds

The kind of problem here is different than with ActiveMQ
since we're concerned with messages sat in the per-node
queues rather than reply queues but its related and worth
fixing here
19905 - mcollective set timeout header on reply messages

Changelog
20950 - Improve dependencies for Debian packages in MCollective plugin package

Use ${binary:Version} so upgrading packages still generates proper dependencies
20950 - Improve dependencies for Debian packages in MCollective plugin package

changelog
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
maint: this option is confusing because already declared
       in the previous config example and value shoud be /mcollective
19751 - Fix and centralize handling of boolean values for settings

In the past boolean values in the config files where parsed in a bespoke
manner by the config class and individual plugins.

This commit adds a str_to_bool method to the util class which gives us
a consistent way of dealing with boolean like strings.
19751 - Fix and centralize handling of boolean values for settings

This commit fixes Util::str_to_bool handling of TrueClass and FalseClass
parameters.
19751 - Fix and centralize handling of boolean values for settings

maint: fix activate agent logic
21251 - Windows absolute paths are not identified correctly

This commit allows paths to include the windows directory name
when checking if a path is absolute.
21251 - Windows absolute paths are not identified correctly

changelog
20714 - Remove the rpchelptemplate and helptemplatedir settings

This commit removes the rpchelptemplate and helptemplatedir
configuration settings. The logic for discovering a template's
path has now been moved to the Util class, which will firstly
check the config directory, then fallback to /etc/mcollective.
20714 - Remove the rpchelptemplate and helptemplatedir settings

changelog update