(#15841,#13542) PMT install/upgrade from a local tarball & embed Minitar

This patch should really be two separate ones but because of it its
gradual changes it ended up as a single large one. It introduces
two principal changes:
* Adds support to PMT for installing/upgrading puppet modules
  from local tarballs. This support depends on a new forge API
  introduced in:
    https://github.com/puppetlabs/puppet-forge-api/pull/32
  In addition to the posibility of installing modules from tarballs a new
  algorithm for module dependency resolution is also introduced.
  The algorithm is capable of backtracking so is able to find resolutions
  even in situations in which the original algorithm would have failed.
  Many of the data structures used by the depedecy resolution code have
  been changed but care has been taken to preserve backward compatiblity
  of any externally visible data structures.
  Also the installer and upgrader applications have been greatly unified,
  so they now share the majority of their code.

* Embeds the minitar gem into Puppet while changing its namespace to:
    Puppet::Util::Archive::Tar::Minitar
  and makes use of it at various places in the PMT code instead of
  calling external tar utilities.
(#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 now uses the ebeded minitar to work with
the module packages instead of calling external tar commands and has
gained the capability to install modules from tarballs.
(#13542) New and updated unit tests for the PMT tarball install

This patch adds new and updates the original unit tests for the PMT
install/upgrade code which now uses the ebeded minitar to work with
the module packages instead of calling external tar commands and has
gained the capability to install modules from tarballs.