(#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
Adjust to use default URI.escape escape list

Conform to RFC per comments on: https://github.com/puppetlabs/puppetlabs-stdlib/pull/164

Conflicts:
	lib/puppet/parser/functions/uriescape.rb
	spec/unit/puppet/parser/functions/uriescape_spec.rb
Merge branch 'uriescape-use_default_escape_list'

This closes GH-164
added delete_values() and delete_undef_values() functions
Merge pull request #166 from ptomulik/delete_undef_values

Add delete_values() and delete_undef_values() functions
changed the validate_slength function to accept a min length

An optional third parameter can be given a min length. The function
then only passes successfully, if all strings are in the range
min_length <= string <= max_length

update and fix function and unit tests

the check for the minlength has to be written differently
because 0 values should be possible. We now check
a) if the input is convertible, and throw a ParseError and
b) if the input .is_a?(Numeric) and ask for a positive number
it's not as clean as for maxlength, but keeps a similar behaviour

refined the error checking for the min length

try to convert to Integer(args[2]) and fail,
if it's not possible

changed the tests accordingly to the new parameter checking
Merge pull request #167 from mhellmic/minlength

extend the validate_slength function to accept a minimum length
Fix validate_slength, arg.length should be args[0].length

During a puppet run an error will be thrown and a puppet run will fail completely (when using validate_slength):
undefined local variable or method `arg' for #<Puppet::Parser::Scope:0x7f243c236948>
minor corrections to delete_values()
Merge pull request #169 from hdeheer/patch-1

Fix validate_slength, arg.length should be args[0].length
(maint) Remove unneeded parens around exceptions
(maint) Explicitly unpack validate_slength args
(maint) reword error messages for validate_slength
(maint) clean up validate_slength argument validation
(maint) collapse String/Array validation into shared lambda
(maint) reindent case statement to match standard indentation
(maint) refactor validate_slength tests
(maint) Validate input argument in a single location
Merge branch 'maint-refactor_validate_slength'