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]
Merge branch '3.1.x'

* 3.1.x:
  Revert "Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'"""
Revert "Revert "Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'""""

This reverts commit 2885d314b61055d20d85d36a68214f7d9e1e6ac6.

No, really.  Keep the !@#$% integration branches around so we don't have
this revert nightmare again.
Merge branch '4.x'

* 4.x:
  Revert "Revert "Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'""""
  Revert "Revert "Revert "Merge branch 'hkenney-ticket/master/2157_remove_facts_dot_d'"""
Merge branch '3.1.x' into 4.x

* 3.1.x:
  Update Modulefile, CHANGELOG for 3.1.0
Merge branch '4.x'

* 4.x:
  Update Modulefile, CHANGELOG for 3.1.0
Merge branch '3.x' into 4.x

* 3.x:
Merge branch '4.x'

* 4.x:
Merge branch '3.x' into 4.x

* 3.x:
  Revert "Revert "Merge branch '2.5.x' into 3.0.x""
  Revert "Merge branch '2.5.x' into 3.0.x"
  (maint) Fix spec failures resulting from Facter API changes
Merge branch '4.x'

* 4.x:
  Revert "Revert "Merge branch '2.5.x' into 3.0.x""
  Revert "Merge branch '2.5.x' into 3.0.x"
  (maint) Fix spec failures resulting from Facter API changes
Merge branch '3.x' into 4.x

* 3.x:
  Update Modulefile, CHANGELOG for 2.5.1
Merge branch '4.x'

* 4.x:
  Update Modulefile, CHANGELOG for 2.5.1
Add function, uriescape, to URI.escape strings. Redmine #17459
Merge branch 'add/4.x/joejulian-add_uriescape' into 4.x

* add/4.x/joejulian-add_uriescape:
  Add function, uriescape, to URI.escape strings. Redmine #17459
Merge branch '3.x' into 4.x

* 3.x:
  Add function, uriescape, to URI.escape strings. Redmine #17459
  Add function, uriescape, to URI.escape strings. Redmine #17459
  Update CHANGELOG, Modulefile for 3.1.1
Merge branch '4.x'

* 4.x:
  Add function, uriescape, to URI.escape strings. Redmine #17459
  Add function, uriescape, to URI.escape strings. Redmine #17459
  Add function, uriescape, to URI.escape strings. Redmine #17459
  Update CHANGELOG, Modulefile for 3.1.1
Merge branch '3.x' into 4.x

* 3.x:
  (#13974) Add predicate functions for interface facts
Merge branch '4.x'

* 4.x:
  (#13974) Add predicate functions for interface facts
Merge branch '3.x' into 4.x

* 3.x:
  Add the pick() function
Merge branch '4.x'

* 4.x:
  Add the pick() function