14107 - plugin packager must support signing

In the past the plugin packager did not support package signing.

Both rpm's and debs can now be signed using the --sign flag.
14151 - Stopping a stopped service and starting a started service should return 0

According to LSB guidelines, starting a started service and stopping a stopped
service should be considered successful and return 0. This fix adds --okonodo
to both the start and stop actions for debian to achieve that goal. It also
wrapps the daemon and killproc calls in a rh_status_q call so that daemon is
only called if mcollective is not already started and killproc is only called
if mcollective is running.
The commit also lines up exit codes for lack of binary to be 5, which lines
up with a 'program not installed' error, which would be the likely cause of
the mcollective binary to be absent. It also uses an exit code of 2 for no or
unknown arguments to the init script (the * case), which is in line with LSB
guidelines.
It also includes some trailing whitespace cleanup.
14159 - Make Rakefile more robust for rpms

Previously the Rakefile didn't recognize Fedora as an lsbdistro and wouldn't
try to use rpmbuild-md5. This commit adds a check for rpmbuild-md5, which is
then preferred over rpmbuild because it is backwards compatible with older ELs.
It also adds recognition for Fedora as an lsbdistro so if src rpms are build on
Fedora, the rake rpm task will succeed.
14159 - Make Rakefile more robust for rpms

Update changelog
9451 - Clean up Requires, BuildRequires, Group, etc

This commit simplifies the Requires and BuildRequires, putting most of them in
mcollective-common, upon which the rest depend. It also adds BuildRequires on
ruby(abi) of 1.8 and updates the License, Source0, and project URL. It also
uses recognized Groups for the package.
9451 - Replace paths with macros in mcollective SPEC file

Replaces hard-coded paths with macros where appropriate %{_bindir} rather than
/usr/bin, %{_libexecdir}, %{_sysconfdir}, and %{_sbindir}.
9451 - RPM Spec file improvements

Update changelog
14239 - RPC::Client#compound_filter does not correctly add to options

The filters in the main protocol hash are all arrays and calls to
Client#compound_filter and Client#fact_filter etc should append to those
arrays.  Compound filter did not and so setting the filter from the RPC
client just did not work.

We now append to the array instead
13900 - Release 2.0.0

- Update Changelog and Release notes
- Bump version number
- Remove mentions of pre 2.0.0 version in the doc ie. 'since version 0.3...'
- Add debian getting started docs
- Some white space fixes to bin scripts
- Update some documentation to reflect changes to CLI tools
maint: fix formatting of release notes
14292 - Move M::RPC::DDL to M::DDL

In the past the DDL was used only for agents, since the new packaging
system has been introduced all plugins could potentially have DDLs.

We are also adding new plugins for Data that will need DDLs to describe
the data they return and their input to facilitate online help etc

This commit moves the DDL class to MCollective::DDL and adds deprecation
tooling so that invocations of the old MCollective::RPC::DDL wont break
but warnings will be logged.

Also update all uses of MCollective::RPC::DDL to the new name
14292 - Move M::RPC::DDL to M::DDL

maint: silence some "parenthesize argument(s) for future version"
warnings in spec tests on ruby 1.8.5
maint: fix typo in release notes
14293 - DDL class should be able to find and load DDLs for all plugin types

The DDL was traditionally only used for agents, this is changing to
include all plugin types.

This commit gives the DDL class the ability to load other types of DDL
and add some safety checks into the methods that are clearly agent
specific, eventually these should move into sub classes of the DDL so
that the validations etc for various types of plugin are kept seperate
to keep things maintainable
14277 - Upgrade from 1.2.1-1 fails

Previously the debian packages declared that they depend on <= version
of the common deb, this is wrong as all the packages have to be at the
same version.

Additionally we also mark that the common package breaks and replaces
previous packages to ensure this dependency is in effect immediately and
to prevent the erb file that moved between different packages causing
problems when upgrading from 1.2.1
14277 - Upgrade from 1.2.1-1 fails

Update changelog
14254 - Create pluggable data sources usable in agents and discovery

This adds a new plugin type called Data with associated tooling to load
them, create DDLs for them and allow the plugin packager to package
them.

These plugins provide a standard means to query information about the
running system like the existance of a user etc, these will be usable in
agents and eventually in the discovery system and clients.  Users can
write their own data plugins thus extending discovery.

An example File Stat data source is included, to use the File Stat data
source in a agent you simply do:

    reply[:result] = Data.fstat("/etc/passwd").size

The data source can only return String, Numeric and Boolean data, the
the result object in the plugin enforce this and the result itself
behaves like a hash so multiple items can be returned like for a plugin
you might return arch, versions etc.  Restricted to these types to be
compatible with JSON which will become the transport medium for
mcollective in future.

These data sources will be exposed to discovery from the client where a
user might write a compound discovery statement like:

    -S "fstat('/etc/passwd').mtime_age < 3600"

This will let users discover machines where the password file was
changed less than a hour ago.

This will allow us to extend discovery with any information like using
Augeas or really any other information availble on the nodes.  I
anticipate that we'll ship ones to query sysctl, fstat and a few other
common needs.

The data sources have activate_when block support just like agents for a
confine system and the DDLs define input, output, ttl and other standard
metadata.  We validate the query prior to calling the lookup function
based on the DDL for safety.

The DDL system can now handle DDL files for different types of plugin
and supports different ERB templates to produce help for each type of
plugin.  There is now a conventional location for these erb files - the
directory the configuration file is in by default - and this is
configurable in the config files.
14254 - Create pluggable data sources usable in agents and discovery

Rewrite scanner and parser to handle functions, arguments and output
properties.

Update the security base class to use the new methods to validate
filters and adjust option parser to use the new helpers for creating the
call stack
14254 - Create pluggable data sources usable in agents and discovery

Add client side validation of data functions and expected return values
14254 - Create pluggable data sources usable in agents and discovery

- Fixed String comparison
- Removed ability to do < and > comparisons with Strings and Booleans
- Changed function hash keys to strings from symbols
- Removed exits from parser
- Fixed Scanner regex that identifies correct function statements
- Updated Scanner and Parser spec tests