14595 - plugin packager / info doesn't handle absent DDL files well

Previously the plugin application's package/info actions raised
undescriptive exceptions if a ddl wasn't present.

The plugin application will now raise a descriptive error stating that
no ddl file was found.

Added tests for PluginPackager
14595 - plugin packager / info doesn't handle absent DDL files well

Upate changelog
14595 - plugin packager / info doesn't handle absent DDL files well

maint : fix failing tests
14671 - setting direct_addressing = true is not accepted in server.cfg to enable direct addressing

direct_addressing takes only 1/0 y/n but the example showed false as an
option.  Additionally the direct_addressing option is documented in
common and in server specific case.

this commit just removes the server specific line as the common one is
correct and covers it.
14196 - Add bash completion script for mco

Add a new application plugin to assist completion systems by providing
easy access to lists of application, agents, actions and inputs

Also change the Applications#list method to use the new helper from the
PluginManager class to find applications rather than duplicate the logic
14196 - Add bash completion script for mco

Add --verbose handling to the completion application which will cause it
to emit agentname:description etc for shells like zsh that has a more
capable completion system than bash.

Add a zsh completion script that can complete application names and has
specific handling for the rpc application wrt agent, action and inputs
14196 - Add bash completion script for mco

Make use of the completion helper app in the bash completion script
14640 - document common CLI usage

Document the basic usage of the mcollective CLI
14255 - Discovery method should be pluggable

This makes discovery pluggable it includes 2 plugins one thats the
traditional broadcast, one that discovers against a flatfile and a third
has been comitted to the plugins repository that uses the mongodb
discovery plugin to create a local cache

Discovery plugins need DDLs, in the DDL files they declare their
capabilities - can they do fact filter etc. and mcollective will
validate the filter prior to calling the plugin.

RPC clients will force to directed mode for anything but the mc plugin

You'd elect to use a different default discovery mode by setting
default_discovery_mode = flatfile in your client config file

The plugin application will show help for these plugins, it can package
them as rpm/deb and all the usual stuff

The RPC library will adjust discovery time based on the timeout in the
DDL for the plugin unless a custom timeout is specified on the CLI

In a case where compound filters are used we force the 'mc' discovery
plugin since data queries means this is the only thing that makes sense

All application now have a --nodes option that can take a flat file with
a list of nodes
14255 - Discovery method should be pluggable

Update changelog
14864 - update docs for new doc system

Update docs for new docs.puppetlabs.com auto toc and title features
14668 - subcollectives + direct addressing fails

The ActiveMQ connector tracks duplicate subscriptions using a
subscription id and wont do the same subscription twice.

The direct request queues were created using the same id thus only the
main collective (or first one mentioned in the config) would be
subscribed to.

This gives each direct queue a unique subscription id resolving the
problem
14868 - The 'No response from' report should be correctly formatted

Use the Array#in_groups_of monkey patch to correctly format the no
responses report.  Also refactor it to use a StringIO object to be a bit
less horrible
14717 - Create code generator for agents and data query plugins

This commit adds a simmple cli generator action to the plugin
application.

Currently Agent and Data plugins can be generated. Predetermined
metadata parameters can be specified either as command line flags for
example '--description "Plugin description"' or in the client config
file as 'plugin.metadata.description = "Plugin description"'

Example use : mco plugin generate agent new_agent actions=foo,bar
              mco plugin generate data new_data outputs=out1,out2
14874 - Setting the collective in an rpc client should reset the client

When changing collectives the list of nodes applicable to a specific
filter will change.

Prior to this commit setting the collective did not clear the discovered
host list which might leave a stale expectation in the client leading to
unexpected failures.

We now reset the client after changing the collective, we also validate
the collective exist before changing it.
14846 - Release 2.1.0

Prepare release notes, changelog and Rakefile for 2.1.0
Fix some bad formatting in some docs
Add docs for discovery plugins
maint: fix missing link to discovery plugin documentation
14942 - identity filter optimisations should only be done for the mc discovery method

Discovery plugins might have their own idea of identity so the discovery
optimization the client does to short circuit discovery when only string
identity filters are supplied should be restricted only to the known
case of the discovery plugin.

This adds the restriction so it only happens with the mc plugin
14945 - Add a datasource to introspect an agent

Add a data plugin that can be used to discover on properties of running
agents.

This will allow for discovery queries like below:

    mco find -S "agent('puppetd').version = 1.6"

The full metadata is available
14777 - Remove M::Client#discovered_req

The old M::Client#discovered_req is now unused and the SimpleRPC
framework provides a much more user friendly approach to solving the
problem

This removes the functionality from 2.1.x and updates the documentation
warning users that its use will be gone from the next major release.