17930 - mcollective: direct addressing mode when using reply queue

The fire_and_forget mode of requests were not made direct_request
aware while adding the direct addressing communiations mode.

The result of this was that setting :process_results => false and
doing direct requests would result in the request always being broadcast
and not sent out only to the nodes supplied via the discovery layer

This addresses that and adds tests around this method
17930 - mcollective: direct addressing mode when using reply queue

Also handle the case where a discoverer forces direct mode but no
discovery has been done yet
17930 - mcollective: direct addressing mode when using reply queue

And handle the case where the 'mc' discovery method is used and specific
node information is supplied that is not a regex
20282 - Puppet agent; nodes file with spaces

Identities can only match /^[\w\.\-]+$/ which is enforced in the config
class.

The flatfile discovery method exist so that someone can put a bunch of
identities in a file and use that for discovery, thus the identities
have to adhere to the same rules but this check was never done which in
some circumstances could result in incorrect 'No responses from' errors
etc.

This commit enforces the same check when reading flatfiles resulting in
an error to the user when they have an error in their file
20388 - Mcollective should have sane defaults for configfiles on windows

This commit adds sane defaults for the server.cfg and client.cfg files.
The other configuration files can then be specified in those two files.
As these merely add defaults, any commandline flags for configfile
location will override the default.
20388 - Mcollective should have sane defaults for configfiles on windows

changelog
20059 - Data matcher logs bad errors when query returns nil

In the past when a data query field did not get assigned a value it
will default to nil which would log an non descriptive error when it gets
compared.

Data query fields that default to nil will now immediately return false,
meaning that all unset query values will evaluate to false.
20059 - Data matcher logs bad errors when query returns nil

changelog update
maint: Update a few orphaned links to marionette-collective.org

These links still live but the site's folded into puppetlabs.com
so they were 404. This commit updates the text to point at the distro-specific
dependencies repo and changes the DepRPMs link anchor to point at
yum.puppetlabs.com.
maint: update testing for windows

Add some special handling and exclusions for windows based machines
maint: improve new line detection so tests pass on windows and unix
maint: setup travis ci for PR testing
20661 - Util#versioncmp fails in some cases

The versioncmp helper failed to correctly compare 1.2.10 and 1.2.8
but this has already been fixed in Puppet where we got our logic
from first so we're just grabbing whats in Puppet now to resolve
this
Docs: Add new deployment and configuration docs

This commit adds:

- index page for deploy docs
- Installing MCollective page
- standard deployment getting started guide
- overview of roles and components
- middleware options index
- minor fixes to the ActiveMQ config reference
- Minor fixes to the server config reference
- client config reference
- plugin deployment guide
- Vagrant demo page

Additionally, it makes the following changes:

- Delete content of EC2 demo page
- Mention using registration as a heartbeat (server config and standard deployment)
- Add deprecation warning and links to the old getting started guides
  (and delete the most outdated one entirely.)
20592 - Release 2.2.4

Update release notes and changelog for 2.2.4
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