(#7622) Deprecate and remove features.pson?

PSON is always available and so the pson feature was only used for the
side-effect of requiring the pson files. This commit deprecates the pson
feature and moves the requires to the puppet.rb file so that PSON is
available early on.
Replace dashes with dots for gem version

When switching out to using git-describe for versioning from
source, gem versioning breaks because dashes are not allowed.
This simple fix replaces the dashes with dots, which are.
Note that in a merge-up to 3.0.x, this commit will conflict.
Default to 'ours' in a merge-up, this file does not even exist
in 3.0.x and shouldn't.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Maint: Refactor code for loading ssl files

Prior to this commit, the code for creating a model and loading it from
a file was duplicated in two places. Also, the
`renaming_files_with_uppercase` method was being called after the
existence checks, complicating the logic.

This commit moves the duplicate code to a single method. It also moves
the `renaming...` method earlier, so that we get into a sane state as
soon as possible.

Finally, it adds a deprecation warning for some crazy behavior in the
`rename_files_in_uppercase`. The `search` method may return an uppercase
name, since it just walks the directory. But if `find` is called on the
uppercase name, then the file gets lowercases, so that subsequent calls
to `search` return the lowercased name. See #17307.
Maint: Cleanup order dependent test failure

Previously, this would fail:

    rspec --order random:786 spec/unit/indirector/ssl_file_spec.rb

because several of the examples set global state on the
Puppet::Indirector::SslFile class.

This commit adds an after each block to clean up.
Maint: Fix poorly mocked test

Previously, the test was calling into the settings subsystem, which had
the undesirable effect of loading facter, and that generated errors
(though they weren't fatal) due to the expectation on FileTest
interferring with Facter's operatingsystem fact on debian6, at least.

  Could not retrieve operatingsystem: unexpected invocation:
  FileTest.exists?('/etc/debian_version')

This commit changes the test so that we don't calling into the settings
code.
Merge pull request #1252 from joshcooper/maint/master/refactor-ssl-file

Maint/master/refactor ssl file
Maint: Fix typo

Previously, we were passing in a string instead of an array, and in ruby
1.8, you can call select on a string, but not in ruby 1.9.
Merge branch 'ticket/master/7622-remove-confine-true-with-feature'

* ticket/master/7622-remove-confine-true-with-feature:
  (#7622) Deprecate and remove features.pson?
Merge pull request #1254 from MosesMendoza/maint/2.7.x/fixup_gem_task

Replace dashes with dots for gem version
Fix build targets for 2.7.x

This commit revises the lists of cows and mocks to build against to remove
redundant and unnecessary targets given Puppet is noarch.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
rm packaging artifacts in rpm spec, debian rules

The 2.7.x packaging will include misc packaging artifacts we shouldn't
ship. This commit removes them in packaging.

Signed-off-by: Moses Mendoza <moses@puppetlabs.com>
Merge pull request #1255 from MosesMendoza/maint/2.7.x/packaging_fixes

Maint/2.7.x/packaging fixes
Maint: Improve explanation of exec type's "creates" parameter

The "creates" parameter was still causing user confusion (see re-opening
of issue #8612), so this commit revises it to be more wordy and
hopefully totally unambiguous.
Merge pull request #1258 from nfagerlund/exec_creates_param

Maint: Improve explanation of exec type's "creates" parameter
(#7422) Support arrow syntax with metaparams

Attempts to combine the arrow syntax with
metaparams lead to the following error message:

Error: undefined method `<<' for {}:Hash

For example, the following code:

  Notify['one'] -> Notify['three']

  notify { 'one':
    before => Notify['two']
  }
  notify { 'two': }

  notify { ['three', 'four']: }

Causes this issue. This is because relationships
appended with the -> syntax assume that the current
list of dependencies are an array.

Given that, it is not surprising that the following
code is valid at the moment:

  Notify['one'] -> Notify['three']

  notify { 'one':
    before => Notify['two', 'four']
  }
  notify { 'two': }

  notify { ['three', 'four']: }

In this case, the dependency resources are already
expressed as an array before the arrow syntax appends
the additional dep.

This commit converts everything to an array before
trying to append additional relationships to that
array. The fact that the second code snippet already
works demonstrates that Puppet already supports
appending additional refs to an array of refs.
Merge branch 'fix/2.7.x/7422_fix_relationship_append' into 2.7.x

* fix/2.7.x/7422_fix_relationship_append:
  (#7422) Support arrow syntax with metaparams
Merge branch '2.7.x' into 3.0.x

* 2.7.x:
  (#7422) Support arrow syntax with metaparams
  rm packaging artifacts in rpm spec, debian rules
  Fix build targets for 2.7.x
  Preserve timestamps when installing files
  Replace dashes with dots for gem version

Conflicts:
	ext/build_defaults.yaml
	ext/debian/rules
	ext/redhat/puppet.spec.erb
	tasks/rake/gem.rake
Merge branch '3.0.x'

* 3.0.x:
  (#7422) Support arrow syntax with metaparams
  rm packaging artifacts in rpm spec, debian rules
  Fix build targets for 2.7.x
  (#15513) Clarify target attribute for cron
  Preserve timestamps when installing files
  Replace dashes with dots for gem version
Merge branch '2.7.x' into 3.0.x

* 2.7.x:
  (#7422) Support arrow syntax with metaparams
  rm packaging artifacts in rpm spec, debian rules
  Fix build targets for 2.7.x
  Preserve timestamps when installing files
  Replace dashes with dots for gem version

Conflicts:
	ext/build_defaults.yaml
	ext/debian/rules
	ext/redhat/puppet.spec.erb
	tasks/rake/gem.rake
Merge branch '3.0.x'

* 3.0.x:
  Maint: Improve explanation of exec type's "creates" parameter