add a "step" argument to range()

This patch adds an optional "step" argument to the stdlib range()
function.  There is no change to the default behavior of the function;
however, passing a numeric "step" argument invokes the Ruby Range#step
method, e.g.

    range("0", "9", "2")

returns

    [0,2,4,6,8]
changed .count to .size to support legacy ruby
Merge branch 'master' of git://github.com/puppetlabs/puppetlabs-stdlib
check if an argument supposed to be merged is empty to
pass over undefs without failing
(#20548) Allow an array of resource titles to be passed into the ensure_resource function

This patch allows an array of resource titles to be passed into
the ensure_resource function.  Each item in the array will be
checked for existence and will be created if it doesn't already
exist.
Changed str-to-array conversion and removed abbreviation.
Refactor ensure_resource expectations

This splits out the ensure_resource expectations into separate
blocks for clarity.  Per adrienthebo's recommendation.
Terser method of string to array conversion courtesy of ethooz.
Merge pull request #152 from AlexCline/feature/master/allow_arrays_in_ensure_resource

(#20548) Allow an array of resource titles to be passed into the ensure_...
(maint) Update Gemfile with GEM_FACTER_VERSION

Without this patch we cannot explicitly set the version of Facter to
integrate using Bundler.  This patch addresses the problem by adding a
new environment variable, GEM_FACTER_VERSION which allows bundler to
install a specific version of Facter.  GEM_FACTER_VERSION is the
variable name instead of FACTER_GEM_VERSION to prevent the gem_version
fact from being defined.  In addition, GEM_PUPPET_VERSION is defined
based on PUPPET_GEM_VERSION in order to match the environment names and
provide backwards compatibility with CI jobs.
Revert "Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'"""

This reverts commit 8fc00ea5b6b39b220ebc6391489915dbeeb364ab.

We're restoring facts_dot_d support to stdlib because users are pulling
in the latest version of stdlib while on Puppet Enterprise which breaks
the operation of PE itself when the fact_stomp_server and
fact_stomp_port facts are not defined.  They are not defined in PE
because PE runs with Facter 1.6.17 and Puppet 2.7.21
(#20582) Restore facter_dot_d to stdlib for PE users

Without this patch Puppet Enterprise users who install the most recent
version of stdlib lose the ability to resolve certain facts critical to
the operation of Puppet Enterprise.  These facts are defined externally
in the file
`/etc/puppetlabs/facter/facts.d/puppet_enterprise_installer.txt`.
As an example, Puppet Enterprise catalogs fail to compile if the
`fact_stomp_server`, and `fact_stomp_port` facts are not defined.

`facter_dot_d` was removed from stdlib version 4 because Facter version
1.7 now supports external facts defined in
`/etc/puppetlabs/facter/facts.d/puppet_enterprise_installer.txt`.
Puppet Enterprise does not yet include Facter 1.7, however.  The most
recent PE release, 2.8.1, includes Facter 1.6.17.  With this version of
Facter, users who replace the version of stdlib that ships with PE with
the most recent version from the Forge will lose the ability to resolve
facts from
`/etc/puppetlabs/facter/facts.d/puppet_enterprise_installer.txt`.

This patch addresses the problem by detecting if Facter version < 1.7 is
loaded.  If so, then the facter_dot_d.rb facts will be defined using the
stdlib custom fact.  If Facter >= 1.7 is being used then stdlib will not
define external facts.
(maint) Indent facter_dot_d with 2 spaces

Whitespace only re-flow of facter_dot_d.rb
Merge branch 'fix_facts_dot_d_with_pe'

* fix_facts_dot_d_with_pe:
  (maint) Indent facter_dot_d with 2 spaces
  (#20582) Restore facter_dot_d to stdlib for PE users
  Revert "Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'"""
  (maint) Update Gemfile with GEM_FACTER_VERSION

closes #153
fix in merge.rb: refine the checking if an argument is an empty string
Added rspec tests for the new behaviour of merge accepting empty strings

added test that '' is accepted
changed a test that a number is correctly rejected with a type error
Update Modulefile, CHANGELOG for version 4.1.0

This commit alters the module metadata to indicate a 4.1.0 version
release for the Puppet Forge. It contains backwards compatible
features, refactors and bug fixes.

CHANGELOG updated by JJM
Merge branch 'puppetlabs-release/four_one_oh'

* puppetlabs-release/four_one_oh:
  Update Modulefile, CHANGELOG for version 4.1.0

closes #154
(#20684) Add array comparison functions, difference, intersection and union.

Included is code, tests and documentation for the difference, intersection
and union functions for comparing arrays.
Merge pull request #147 from mhellmic/master

don't fail on undef variable in merge