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
Fix number of arguments check in flatten()

The function only uses the first argument, so raise an error with
too few arguments *and* with too many arguments.
Merge branch 'pull-98' into 2.x
Merge branch '2.x' into 3.x
Merge branch '3.x' into 4.x
Fix number of arguments check in flatten()

The function only uses the first argument, so raise an error with
too few arguments *and* with too many arguments.
str2bool should return a boolean if called with a boolean
Merge branch 'pull-115' into 2.x
Merge branch '2.x' into 3.x
Merge branch '3.x' into 4.x
Merge branch '4.x'
(#13610) Add is_function_available to stdlib

This function provides a simple wrapper around
Puppet::Parser::Functions.function for access within Puppet manifests.
This will allow users to check whether or not a plugin or functionality
such as hiera is installed on the server.
Merge branch 'pull-59'

This closes GH-59
Add floor function implementation and unit tests
Merge pull request #135 from willaerk/master

Add floor function implementation and unit tests
add suffix function to accompany the prefix function
prefix: fix doc typo Examles -> Examples
(maint) better error reporting for prefix and suffix

When prefix and suffix did error checking with positional arguments,
they would not report the position of the argument that failed to
validate. This commit changes the messages to indicate which argument
failed.
Merge branch 'pull-138'

This closes GH-138.