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
Enable num2bool to accept numeric input

Also ignore rspec fixtures directory
Reworked number-handling logic

No more coercing to String and regex matching.  Instead, we now coerce
to Integer at the beginning or raise an error if we cannot coerce to
Integer.

A consequence of this change is that the function will now accept
blatantly non-numeric strings as input, and return false.  This seems a
bit goofy to me, but it's how String#to_i works.  If we really don't
like this, then I'm open to suggestions.
(19864) num2bool match fix

This is a bit more heavy-handed than I might like, but it does appear to
do the right things:

* accepts numeric input appropriately, truncating floats
* matches string input against a regex, then coerces number-looking
  strings to int
* makes a best effort to coerce anything else to a string, then subjects
  it to the same treatment
* raises an error in the event of incorrect number of arguments or
  non-number-looking strings

I've also included some additional unit tests.
Cleanup per adrianthebo suggestions

* use Float() to process string arguments
* get rid of doubly nested arrays
* removing needless ternary operator
* improving error message handling
Merge pull request #139 from hakamadare/19864_num2bool_match_fix

(19864) num2bool match fix
(#19998) Implement any2array

This change is to implement a new function "any2array", which will take any
argument or arguments and create an array which contains it. If the argument
is a single array then it will be returned as-is. If the argument is a single
hash then it will be converted into an array. Otherwise (if there are more than
one argument, or the only argument is not an array or a hash) the function will
return an array containing all the arguments.
(#19998) fix name of function in a comment
Remove resundant code
Merge branch 'amosshapira-any2array'

* amosshapira-any2array:
  Remove resundant code
  (#19998) fix name of function in a comment
  (#19998) Implement any2array

closes #140
(maint) Backport Gemfile and .travis.yml to 2.x

This is a partial backport and update of 03c5c4a434c2290c021034dbfed82cb0f97e0e87
to add travis-ci support and a Gemfile to 2.x. Right now we're not
testing 2.x in travis-ci and we're experiencing spec failures because we
have to install rspec-puppet from git. The best resolution for this is
to consistently use a Gemfile for running tests.

This commit also rewrites the .travis.yml for 2.x to only test 2.x
versions against ruby 1.8.7 and Puppet < 3.0

Conflicts:
	.travis.yml
Merge branch '2.x-backport_gemfile' into 2.x
Merge branch '2.x' into 3.x

This ignores the 2.x .travis.yml when merging up since that version is
only applicable to the 2.x branch.

Conflicts:
	.travis.yml
Merge branch '3.x' into 4.x
Merge branch '4.x'
Add a count function

Similar to the ruby count method on arrays.
(maint) Add the behavior for count() with arrays and hashes

Without this patch the expected behavior of the count() function when
dealing with an out of bound array index and with a hash key that does
not exist is implicitly encoded in the spec examples.  This is a problem
because the expected behavior is not clear for something similar to the
following example:

    node default {
      $ary = [ 1, 2, 3 ]
      $ary_undef = $ary[100]
      $hsh = { 'one' => 1 }
      $hsh_undef = $hsh['dne']
      $count = count(['hi', $ary_undef, $hsh_undef])
      notice "Count is ${count}"
    }

This patch addresses the problem by making the expected behavior
explicit in the examples.
(maint) Make stdlib usable as a Ruby GEM

Without this patch it is inconvenient to use the functions included in
stdlib in a development setting.  The Puppet modulepath must be
explicitly set for the functions to be automatically loaded.

This patch addresses the problem by adding a gem specification and
dependency Gemfile.  This makes it possible to directly use stdlib and
all of the components it depends upon, like so:

    $ bundle install --path .bundle/gems/
    $ bundle exec puppet apply -e 'notice count([1, 2, 3])'

The first command will install all of the dependencies, including Puppet
and Facter, into the local project directory.  The second command will
make stdlib avaialable as a Gem, which will be picked up by Puppet since
(#7788) was merged into Puppet in the 3.0 release.
Merge branch 'dalen-count'

* dalen-count:
  (maint) Make stdlib usable as a Ruby GEM
  (maint) Add the behavior for count() with arrays and hashes
  Add a count function

closes #143