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_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
Merge branch 'master' of https://github.com/puppetlabs/puppet