5078 - Validators should be plugins

The RPC framework brings in some hard coded validators for things like
ipv4address, ipv6address, String, regex and so forth. These should be
plugins so users can drop their own into the system

Hard coded validators have been moved into validator plugins. #validate
has been added to DDL::Base to allow easy access to the validation
plugins.

Plugins can be called either by

	Validator.typecheck(validator, validation)

		or

	Validator.validate(validator, validation)

The DDL validation of input arguments have also been updated to support
these plugins

Validate plugins must implement the validate method where validation
takes place.
Updated video links and made some copy edits to ec2demo.md and screencasts.md

This is in response to Kara's reorg of Puppet video content.
15793 - display of summaries should provide better feedback when something went wrong

Prior to this the absense of aggregate results would simply result in a
block of empty space in the output of printrpcstats.  This was confusing
to the user.

We now assume that any aggregate result #to_s that returns "" were not
capable of calculating results for some reason and show a friendly error
message
15805 - progress bar off-by-one

The progress bar lost a leading space before the first '=' during work
on 14255, this restores the proper formatting
15633 - add general usage info to the DDL

In the past DDL's lacked a place to store general plugin usage
information.

DDL's now have a usage field. A align_text method has been added
to Util which will align and format text based on a discovered
terminal size or a given integer value.

Help templates have been updated to display usage information
about plugins.
15633 - add general usage info to the DDL

Update changelog
15848 - plugin application should give better errors for unknown plugins

In the past running 'mco plugin doc undefinedplugin' would raise an
obscure error.

The error message has been fixed to better reflect that the plugin
could not be found.
15848 - plugin application should give better errors for unknown plugins

Update changelog
15917 - plugin packager should retain the source deb/rpm

In the past the RPM packager discared source rpms/debs.

Source rpms and debian source files are now created and
placed in the same directory as the others.

RPM packager now firstly checks if rpmbuild-md5 is present
before using rpmbuild.
15917 - plugin packager should retain the source deb/rpm

Update changelog
15956 - Plugin Packager fails when specifying target directory

In the past the Plugin Packager would fail if specifying
a target directory to package.

The Plugin Packager now creates packages when a target
directory has been specified.
15956 - Plugin Packager fails when specifying target directory

Update changelog
15850 - add required mco version to metadata

The DDL can now have a section like:

  requires :mcollective => "2.1.1"

Which will prevent this DDL file from loading on any machine with
mcollective younger than 2.1.1.  This will prevent agents from
being loaded on older mcollectived where they might rely on newer
features.

This will be verified on both the client and server and the client
now requires agent DDLs before you can interact with any agents

To get this done we included the versioncmp function from Puppet after a
rewrite to be more ruby like
15850 - add required mco version to metadata

Show the required version in the help output.  Also include the
metadata erb in redhat packaging that was left out before
15850 - add required mco version to metadata

Surpress warnings about unpackaged files and actually package the erb
file for metadata
15917 - plugin packager should retain the source deb/rpm

In the past source packages created by the plugin packager
where not created correctly and unusable.

Source packages are now created correctly on both Debian
and Redhat machines
16168 - include rabbitmq connector in core

Add a RabbitMQ specific direct request capable connector and
documentation
16173 - Plugin packager should get dependency versions from ddl

In the past the plugin packager only allowed mcollective version
dependencies to be set with cli arguments.

The plugin packager now uses mcollective version dependencies
specified in the plugin's ddl. Plugin version and mcollective
type (ie pe-mcollective) can now be specified on the cli.

Example: mco plugin package --mcname="pe-mcollective" --mcversion="2"

The mcserver, mcclient and mccommon flags have been removed from
the plugin application.
16173 - Plugin packager should get dependency versions from ddl

Update website
16222 - Add fetch function for request object in agents

This commit adds a fetch method to both the request and result objects
that will help users create more deterministic code in the face of
missing data