(maint) Readd execute permission to bin/puppet

While doing testing around GH-1582 I wound up using a shared filesystem
with Windows, which casually stomped the execute permission for
bin/puppet. This commit readds the execute bit.
Merge branch 'maint-execute_permission_bin_puppet'
(maint) Update rake spec code loading to match rspec

A shared behavior file located in spec/unit was getting loaded multiple
times if rake spec was invoked. The rspec default behavior loads all
files named *_spec.rb but the rake spec pattern was loading all ruby
files. This commit matches the rake spec behavior to match the rspec
behavior.
Merge branch 'maint-rake_spec_code_loading'
(#19128) Make PSON handle unicode characters

This is mostly copied code from json_pure 1.7.7

And a test that this works (only effective on Ruby 1.9+)
Merge pull request #1589 from dalen/19128_pson_unicode

(#19128) Make PSON handle unicode characters
Revert "Merge pull request #1543 from hlindberg/vendor-rgen"

This reverts commit 493e9208b77feb2d2b3931a694c39c98dfef8b00, reversing
changes made to 8391248c198982e668128368bcd2adfe4bed1890.

We've decided that it will be better in the long run to depend on a
packaged rgen instead of trying to have a copy of it shipped inside
puppet.
Revert "Merge pull request #1542 from hlindberg/vendor"

This reverts commit 8391248c198982e668128368bcd2adfe4bed1890, reversing
changes made to 45ded7da5846e02d24fafddd58d05685de039d88.

Remove the vendoring code. The decision has been made to be much more
restrictive in what we will vendor. Until we actually have something to
put in the code in this manner, we should't keep this vendoring system
floating around.

Conflicts:

	lib/puppet/vendor.rb
(Maint) Depend on rgen for development

With the removal of rgen in the codebase, we need to depend on it using
bundler for development and the packaging system in other cases.

Later changes will add the correct dependencies for the packages.
Merge pull request #1590 from zaphod42/maint/master/remove-rgen-and-vendoring

(Maint) Remove vendoring and rgen
(Maint) Update Gemfile to allow excluding extra gems

We normally have a concept of "basic" and "extra features", but the
Gemfile didn't contain this difference. This updates it to work with
that distinction and also cleans up the handling of the specific git
branches for our (bad) mixture of having a gemspec and not.
(maint) Enable logging for all `puppet doc` commands

Without this commit the --debug and --verbose flags can only be used
with the rdoc mode and doesn't interact with the other documentation
types. This commit extracts the logging configuration to apply to all
documentation modes.

In addition this defaults the log level to :warning. Since warning and
above messages will be emitted on stderr this will not affect the normal
operation of the `puppet doc` command. Using --debug or --verbose will
emit messages on stdout, so they should not be used while
programmatically generating docs.
Merge branch 'adrienthebo-maint-enable_logging_for_all_docs'

* adrienthebo-maint-enable_logging_for_all_docs:
  (maint) Enable logging for all `puppet doc` commands

closes #1580
(#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) Prefer ruby for tar/gzip operations

Previously, the module tool relied on gnu versions of tar and gzip/gunzip
to build and install modules. This isn't portable, e.g. windows.

This commit adds a minitar feature, and modifies the module tool
applications to use that when tar/untar'ing. If the feature is not
available, it falls back to using system commands like it did previously..

Similarly, it checks the zlib feature, and if present, uses ruby's
GzipReader/Writer code to uncompress and compress, respectively.
(#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.