(#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.