(#15841) Use rubygems tar implementation in PMT

This patch replaces PMT's use of external tar utilities for unpacking and/or
building modules with a simple pure ruby tar implementation from rubygems:
  Gem::Package::TarReader
  Gem::Package::TarWriter
and the Zlib gzib implementation from the Ruby Standard Library (stdlib).

NOTE that this makes PMT dependant on the rubygems library (for the installation
and/or building of modules anyway). Should this prove to be a problem it should
be relatively straightforward to emebed the relevant classes in puppet.
(#13542) PMT install/upgrade from a local tarball

This path adds support to PMT for installing/upgrading puppet modules
from local tarballs. It depends on a new forge API introduced in:
  https://github.com/puppetlabs/puppet-forge-api/pull/32
Aside from the posibility to install modules from tarballs this patch
also introduces a new algorithm of module dependency resolution which
can do backtracking so is able to find resolutions even in situations
in which the original algorithm would fail.
(#13542) New and updated acceptance tests for the PMT tarball install

This patch adds new and updates original acceptance tests to keep up
with the changes in PMT which has gained the capability to install
odules from tarballs.
(#13542) Add more YARD and fix a typo

This patch corrects existing and adds additional YARD and fixes
a typo in a variable name.
(#13542) Embed and use Arachive::Tar::Minitar

This patch embeds the minitar gem into puppet while changing its namespace to:
  Puppet::Util::Archive::Tar::Minitar
and makes use of it instead of the previously used rubygems tar code.
The patch also makes sure that the data structure produced by the installer &
upgrader applications is backward compatible (i.e. it contains all the fields
the original structure used to contain in addition to several new ones).
(#13542) Update unit tests broken by the PMT install code changes

This patch updates/removes unit tests broken by the PMT install/upgrade
changes.
(#13542) Add unit test for installer and upgrader

This patch adds unit tests for the code shared by installer and upgrader
as well as for the installer and upgrader themselves.