(#15841,#13542) PMT tarball install & embed Minitar gem

This pull request 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 commands.

The two additional commits in this pull request update and add acceptance
& unit tests to keep up with the code changes, they are deliberately kept
separate to make the review of this pull request somewhat easier.