(#20284) Output one item per line for arrays in console output

To make it easier to read, pipe output and make shell loop from output
from faces it is good if they are printed one item per line for arrays.
Merge pull request #1608 from joshcooper/ticket/stable/20303-user-provider-ruby19

(#20303) Don't rely on automatic array conversion
Merge pull request #1606 from dalen/array_render_as_s

(#20284) Output one item per line for arrays in console output
Merge pull request #1600 from Sharpie/17811-os-x-fix-gid-conversion

(#17811) Fix group id conversion for OS X users
Revert "(Maint) Remove disused puppet.gemspec"

This reverts commit 588b874f2fc42cf1b9d21016aa36d98288df2479.

This commit is being reverted because the change to remove the gemspec
was based on incorrect information.  According to the commit message,
the gemspec file was removed for two reasons.  First, it was thought the
gemspec was not being used for anything other than local development of
Puppet.  Second, the gemspec produced a warning about redefining the
PUPPETVERSION constant.

The gemspec is actually being used in our automated testing of other
projects, specifically stdlib.  The standard library testing matrix uses
the gemspec located in Puppet to satisfy the dependency of stdlib on
Puppet.  The gemspec allows the `stable` and `master` branch to be used
in addition to the officially released Puppet gem on rubygems.org.

Second, the warning is a not a result of the gemspec itself but rather a
result of the way the gemspec is loading 'puppet/version'  We can avoid
the warning while also preserving the gemspec.
(maint) move puppet.gemspec to .gemspec

Without this patch some users assumed the puppet.gemspec is intended to
build the Puppet Gem.  This is a problem because the packaging rake
tasks are what actually build the official Gem.

This patch addresses the problem by moving the gemspec to a hidden file
so that other people are less likely to be confused by the presence of
the gemspec file.
(maint) Fix PUPPETVERSION warning from gemspec

Without this patch Ruby issues a warning about the redefinition of the
PUPPETVERSION constant.  This warning is caused by the gemspec using a
fully qualified require statement instead of a relative $LOAD_PATH based
require.

This patch fixes the problem by catching the LoadError and adding
Puppet's `lib` directory to the head of the $LOAD_PATH.  This change
causes the `require` statement to correctly load puppet/version only
once, which avoids the redefined constant message.

In addition, a comment about the intended use of the gemspec has been
added to help avoid confusion.  This gemspec is intended to allow third
party code to automatically satisfy their dependency on Puppet using
Bundler.  The gemspec is not intended to actually build the package.

Paired-with: Adrien Thebo <adrien@puppetlabs.com>
Merge branch 'restore_gemspec' into stable

* restore_gemspec:
  (maint) Fix PUPPETVERSION warning from gemspec
  (maint) move puppet.gemspec to .gemspec
  Revert "(Maint) Remove disused puppet.gemspec"
Revert "(Maint) Remove disused puppet.gemspec"

This reverts commit 588b874f2fc42cf1b9d21016aa36d98288df2479.

This commit is being reverted because the change to remove the gemspec
was based on incorrect information.  According to the commit message,
the gemspec file was removed for two reasons.  First, it was thought the
gemspec was not being used for anything other than local development of
Puppet.  Second, the gemspec produced a warning about redefining the
PUPPETVERSION constant.

The gemspec is actually being used in our automated testing of other
projects, specifically stdlib.  The standard library testing matrix uses
the gemspec located in Puppet to satisfy the dependency of stdlib on
Puppet.  The gemspec allows the `stable` and `master` branch to be used
in addition to the officially released Puppet gem on rubygems.org.

Second, the warning is a not a result of the gemspec itself but rather a
result of the way the gemspec is loading 'puppet/version'  We can avoid
the warning while also preserving the gemspec.
(maint) move puppet.gemspec to .gemspec

Without this patch some users assumed the puppet.gemspec is intended to
build the Puppet Gem.  This is a problem because the packaging rake
tasks are what actually build the official Gem.

This patch addresses the problem by moving the gemspec to a hidden file
so that other people are less likely to be confused by the presence of
the gemspec file.
(maint) Fix PUPPETVERSION warning from gemspec

Without this patch Ruby issues a warning about the redefinition of the
PUPPETVERSION constant.  This warning is caused by the gemspec using a
fully qualified require statement instead of a relative $LOAD_PATH based
require.

This patch fixes the problem by catching the LoadError and adding
Puppet's `lib` directory to the head of the $LOAD_PATH.  This change
causes the `require` statement to correctly load puppet/version only
once, which avoids the redefined constant message.

In addition, a comment about the intended use of the gemspec has been
added to help avoid confusion.  This gemspec is intended to allow third
party code to automatically satisfy their dependency on Puppet using
Bundler.  The gemspec is not intended to actually build the package.

Paired-with: Adrien Thebo <adrien@puppetlabs.com>
Merge branch 'restore_gemspec'

* restore_gemspec:
  (maint) Fix PUPPETVERSION warning from gemspec
  (maint) move puppet.gemspec to .gemspec
  Revert "(Maint) Remove disused puppet.gemspec"
(maint) Do not use a fake hiera version

Without this patch hiera master cannot be used from Git source to
execute in Bundler.  This is because Puppet incorrectly specifies a
dependency on Hiera 99.0.0 when the correct version of Hiera master is
currently "1.2.1"

This patch addresses the problem by simply removing the fake version,
allowing the correct version to satisfy the dependency.
Merge branch 'stable'

* stable:
  (maint) Do not use a fake hiera version
Merge branch 'restore_gemset_m'

* restore_gemset_m:
  (maint) Fix PUPPETVERSION warning from gemspec
  (maint) move puppet.gemspec to .gemspec
  Revert "(Maint) Remove disused puppet.gemspec"
  (#20284) Output one item per line for arrays in console output
  Maint: Lambda arity must match number of arguments
  (#17811) Ensure PrimaryGroupID is converted to Int
  (#17811) Add test for group name to gid conversion
  (maint) Update COMMITTERS with stable and master branch strategy
  (#11276) Tarball entries should be relative to the `pkg` directory
  (#20121) Invoke chkconfig with --check on SuSE
  (#3010) cron: allow the absent value for the "special" property
(maint) Fix failing WriteOnlyYaml acceptance test

Without this patch the WriteOnlyYaml acceptance test is failing in
master.  The root cause of this failure is the change in behavior in
30fe09e - (#20284) Output one item per line for arrays in console output

The change in behavior causes the default renderer to print a more human
readable vertical list when the output data from Faces is an array.
This change caused the assumptions made in the WriteOnlyYaml test to no
longer be valid.

The acceptance tests appears to assume JSON output from the `puppet
node` command in order to validate the presence of the expected cached
node data.  This patch changes the test to explicitly render the output
of the command using json to ensure the command produces the output
format the test expects.
(maint) Update branch strategy to be the git flow process

Without this patch it's still a bit confusing how to deal with a bug fix
that is merged into stable.  The merge up process documented in
COMMITTERS requires us to reset the stable branch on a new release.

We can avoid this reset if we switch fully to the process described by
[git flow](http://nvie.com/posts/a-successful-git-branching-model/).
The major difference described in this commit is that bug fixes are
reset onto stable, then merged as-is into both `stable` and `master`
without a merge-up of stable into master or a rebase of the change set
back onto master.

This process avoids the reset, allows both `stable` and `master` to have
infinite lifetimes, and keeps the history clean and free of duplicate
commits.

[ci skip]
Merge branch 'jeffmccune-git_flow'

* jeffmccune-git_flow:
  (maint) Update branch strategy to be the git flow process

closes #1604
[ci skip]
Docs: Update description of ctime and mtime properties for file type

Enough people understand ctime to mean "creation time" that it's worth clarifying.
(maint) Update COMMITTERS with feature flags and always working responsibilities

Without this patch Andy's reiteration of PR-1604 is not included in the
COMMITTERS document.  This reiteration is:

    I just want to reiterate that we need to work to make sure that
    master and stable are both clean and working at all times. Use of
    feature flags and other mechanisms is how we achieve this. This
    doesn't mean that dead code is allowed: everything needs to be
    usable in some manner at all points in time. Stable is not an
    indication of the build status of that branch. Stable is an
    indication that it will not be receiving new functionality. We need
    to strive to make both master and stable branches green at all
    times. There is never a case in which we "want" or are "ok with"
    master to be failing tests.

This patch adds these comments to the beginning of the COMMITTERS guide.

[ci skip]