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
str2bool should return a boolean if called with a boolean
Merge branch 'pull-115' into 2.x
Merge branch '2.x' into 3.x
Allow comparisons of Numeric and number as String

Puppet passes numbers as String to functions, but it makes more sense to
compare them as Numeric.
But sometimes Puppet passes them as the wrong type, see:
https://projects.puppetlabs.com/issues/19812
Merge branch 'pull-136' into 2.x
Merge branch '2.x' into 3.x
(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