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]
Add functions to validate ipv4 and ipv6 addresses
Ruby 2.0 introduces IPAddr::InvalidAddressError
Update ipv6 examples
Don't run certain tests under 1.8.7
Adding base64 function

Adding base64 function and spec test.  Included a bonus fix to
validate_slength_spec.rb to put the expectation message in the right
place.
Merge pull request #159 from fiddyspence/feature/base64

Adding base64 function
Merge remote-tracking branch 'pr/56' into pull-56

Conflicts:
	lib/puppet/parser/functions/range.rb
	spec/unit/puppet/parser/functions/range_spec.rb
(maint) split up range spec with describe blocks
(maint) Use present tense in range_spec messages
(maint) Clean up range_spec error expectation

Replace `lambda` with `expect` for making an error expectation

Add an explicit error message in expectation
(maint) Remove syntax decoration from range_spec
Merge branch 'pull-56'
Merge pull request #158 from wfarr/validate_ip

[#20862] Add functions to validate ipv4 and ipv6 addresses
ensure_resource: fix documentation typo
Merge pull request #165 from tigercomputing/fixes/ensure_resource-doc

ensure_resource: fix documentation typo
(#21416) Allow file_line to match multiple lines

Without this commit the file_line type will outright fail if multiple
lines match the given regex. This commit allows the file_line type and
provider to optionally match and modify all matching lines.

Changeset rebased into a single commit by Adrien Thebo <adrien@puppetlabs.com>
Merge branch 'pull-163'

This closes GH-163