(PUP-2561) Revert to using UNIX pipes in PMT’s tar operations.

Prior to this change, we’d attempted to handle shell escaping of
arguments by passing arrays of arguments rather than a single full
command string.  While this worked as intended, it meant that we needed
to stream data between processes through Ruby.  As it happens, larger
tarballs would cause the write pipeline to become backed up, and since
we would attempt to write all the data before reading any, we would
effectively deadlock.

Rather than attempting to stream by chunks, we’ve reverted back to using
the full string commands, and managing shell escapes (where needed) in
Ruby.
(PUP-2562) Remove uses of unsupported range syntax in PMT.

Prior to this commit, if any module contained a dependency statement
without a version requirement, it was erroneously treated as if no
version would satisfy (rather than allowing any version to satisfy).
This was a regression, and this change abstracts the places where we
made those checks, and corrects the error.  In addition, there is new
debugging output that will help identify similar cases in the future.
(PUP-2562) Remove uses of unsupported range syntax from Semantic.

This change pulls in an update to Semantic that was made in commit
6d17d5283e0868cfc3d74d1e9d37b572e1739b6e.
(PUP-2561) Remove the now obsolete ‘mode’ argument to ::execpipe.

Earlier, we’d added a ‘mode’ parameter to the P::U::Execution.execpipe
to support writing to the subprocess’ STDIN.  This commit removes that
functionality since we do not depend on it, we’ve never published it in
a supported release, and we do not wish to provide ongoing support for
it.
Merge pull request #2645 from pvande/bug/stable/pup2561_pmt_deadlocks_on_large_tarballs

(PUP-2561) Revert to using UNIX pipes in PMT’s tar operations.
Merge pull request #2644 from pvande/bug/stable/pup_2562_pmt_incorrectly_rejects_openstack_4_0_0

(PUP-2562) Remove uses of unsupported range syntax in PMT.
Merge branch 'stable'