(maint) Make select and reject produce result of same class as receiver.

The return type of select and reject where unspecified and tests
did not check for type (not caring because all tests applied more
iteration to the result and that evened out the differences).

Now both select and reject produce a result of the same class as
the receiver. This is now noted in the documentation.
Tests have been added.
(#11276) Add minitar feature

This commit adds a `minitar` feature, which depends on the minitar gem.
Updated the Gemfile so that Windows depends on minitar.

Note, a similar change will need to be made to the installer.
(#11276) Select tar command or minitar

Previously, the module tool relied on GNU versions of tar and gzip/gunzip
to build and install modules, which isn't portable on Windows in
particular.

This commit adds Gnu, Solaris, and Mini tar implementations for packing
and unpacking tar.gz format.

It modifies the module tool to select the appropriate implementation for
the platform it's currently running on.

Paired-with: Andy Parker <andy@puppetlabs.com>
(#11276) Enable module tool on Windows

This commit allows the module tool to run on windows and updates the spec
tests as they are no longer pending.
(#11276) Execute puppet module tool pack & unpack on agents

Previously, all of the module tool acceptance tests run on the master,
which is never windows.

This commit adds two acceptance tests to ensure the module tool can
generate, build, and install modules from the pmtacceptance forge, which
exercise the pack & unpack functionality.
(#11276) Fix require ordering issue on Windows

Make sure we require msvcrt/buffer is required before using it.
(maint) Fix problems due to ruby 1.8.7 not returning Hash

Ruby 1.8.7 select and reject does not return a Hash when applied
to one. This fix constructs a new Hash if one is not produced.

This commit also contains a fix of a typo in exception name (ParserError
instead of ParseError).
Merge pull request #1599 from hlindberg/issue-reject-select-hash

(maint) Make select and reject produce result of same class as receiver.
Merge pull request #1601 from joshcooper/ticket/master/11276-windows-module-tool

Support module tool on Windows