(#17067) Add packaging data files to ext

This commit adds ext/build_defaults.yaml and ext/project_data.yaml, both of
which define the targets, files to be installed, and package types to be
installed. This allows our standard packaging tools to work.

This also updates the .gitignore to include the ext/packaging directory, where
the packaging tools will be cloned.
(maint) Add parens to system call to disambiguate the *.
(#17067) Load packaging tasks when available

This commit adds code to the Rakefile that loads packaging.rake if it exists.
That file defines tasks to fetch and remove the packaging tools, and to load
them when they are present.
(#17067) Prefix destdir onto plugindir and sbindir in install.rb

Previously sbindir and plugindir both did not get destdir prefixed onto them,
which meant that building for most packaging systems would fail when install.rb
tries to write to /usr/sbin or /usr/share without having root. This commit
prefixes destdir so those directories are correctly handled.
(#17067) Don't install etc/ssl/clients/PLACEHOLDER in install.rb

PLACEHOLDER exists so that the directory will be created during install. This
can be handled more gracefully in packaging, so this commit removes that file
from install.rb. Any packaging that uses install.rb will need to create this
directory.
(#17067, #14612, #19319) Templatize and improve the mcollective.spec

Our packaging tools expect to find a redhat spec template in ext/redhat. This
commit copies the current mcollective specfile into an erb file. It also brings
in the work of https://github.com/puppetlabs/marionette-collective/pull/41 to
add systemd files for the systemd init system and updates the specfile to use
them on systems with systemd.  Thanks to Steve Traylen (traylenator on github)
for the systemd work included here.
(#17067) Refactor mcollective.spec.erb to use install.rb

Previously the specfile replicated much of the logic in the Makefiles that got
ported into install.rb. This commit moves the specfile to use the install.rb
instead of doing the same work manually. Using install.rb means that certain
prereqs are checked, so BuildRequires are added for rubygems and stomp. This
also adds the docs to the common package and ensures that mcollectived has sane
permissions.
(#5924, #14206) Update debian packaging to use quilt instead of dpatch

dpatch is a long deprecated patch mechanism for debian. It is now a lintian
error instead of a warning. This commit updates the build to use quilt instead
of dpatch. It also removes unneeded patches that weren't even being applied and
also add the source/format file to indicate the package uses the quilt
standard. The commit also applies the initlsb.dpatch patch to the debian init
script for debian.
(#17067) Add a debian changelog erb template

The packaging tools expect to have a debian changelog template available to
evaluate during the debian package build. This commit adds a simple one.
(#17067) Update debian/rules to use install.rb

Previously a Makefile was sourced and used to install mcollective. Now that
install.rb is available to make the install experience consistent across
platforms, it can be used instead of the makefile. This commit updates the
rules file to use install.rb instead of that makefile.
(#17067) Add etc/mcollective/ssl/clients and plugins.d to debian package

The mcollective package contains two empty directories on redhat,
/etc/mcollective/ssl/client and /etc/mcollective/plugin.d. This commit adds a
dirs file to the debian package to create those same directories.
(#17067) Simplify mcollective.install file

Previously the mcollective.install file specified the destination directory,
even though it didn't differ from the source. It also installed the init script
directly. This commit removes the destination half of the file, as it is
implied in the source pathing. It also removes the init script installation,
which happens automatically because of how the file is named in the debian
directory.
(#15342, #17804) Add build-depends on ruby-stomp, rubygems, ruby

Using to install.rb on debian means ruby must be present on the system.
install.rb verifies that both rubygems and the stomp library are present, so
build dependencies are need for those as well. This commit adds those build
dependencies to the debian control file.
(#17067) Update Rakefile to invoke new tasks

This commit updates the logic of the Rakefile to maintain backward
compatibility with the old build tools. Now the top level tasks like deb, rpm,
gem, and doc simply wrap invocations of package:deb, package:tar, package:rpm,
package:gem, and package:doc. The pkg directory (where packages built using the
new tools go), is then moved to the build directory to maintain compatability.
This allows the same tasks to be invoked with the same results. There are some
caveats.
  - First, only the RELEASE can be specified via environment variable. The version
    can be changed by tagging the project and the name can be changed by editing
    ext/project_data.yaml.
  - Second, the version is no longer static/determined by constants in the
    rakefile. It is linked to the git describe, which is based on the last
    signed tag.
(#17067) Remove Makefile.debian and mcollective.spec

Makefile.debian has been replaced in the debian/rules by using install.rb, and
mcollective.spec has been replaced by the template mcollective.spec.erb, so
they are no longer necessary. This commit removes them.
Merge pull request #125 from haus/ticket/master/17067_add_auto_packaging_support

Move packaging tools to new format
22114 - Add a timeout option for system commands

This commit adds a timeout option to `MCollective::Shell.new` and
`MCollective::RPC::Agent.run`.

Previously in case of a stuck child process the systemu guardian thread
was just waiting on the childpid forever, even after the executing agent
reached its timeout. It is now possible to use the timeout parameter to
force termination of the chilld proccess.

The timeout can be specifier in seconds or if the symbol :on_thread_exit
is given, the child process is killed when the executing parent thread exits.