Move unit tests to spec/functions

rspec-puppet matchers are defined for tests which exist in
spec/functions, but the function unit tests lived in
spec/unit/puppet/parser/functions. This moves them to the correct place
for using rspec-puppet
Merge pull request #250 from hunner/move_unit

Move unit tests to spec/functions
Fix the stdlib functions that fail tests
Merge pull request #251 from hunner/fix_tests

Fix the stdlib functions that fail tests
Release - 4.2.0

Summary
========
This release adds many new functions and fixes, and continues to be backwards compatible with stdlib 3.x

Features
-------
- New `base64()` function
- New `deep_merge()` function
- New `delete_undef_values()` function
- New `delete_values()` function
- New `difference()` function
- New `intersection()` function
- New `is_bool()` function
- New `pick_default()` function
- New `union()` function
- New `validate_ipv4_address` function
- New `validate_ipv6_address` function
- Update `ensure_packages()` to take an option hash as a second parameter.
- Update `range()` to take an optional third argument for range step
- Update `validate_slength()` to take an optional third argument for minimum length
- Update `file_line` resource to take `after` and `multiple` attributes

Bugfixes
--------
- Correct `is_string`, `is_domain_name`, `is_array`, `is_float`, and `is_function_available` for parsing odd types such as bools and hashes.
- Allow facts.d facts to contain `=` in the value
- Fix `root_home` fact on darwin systems
- Fix `concat()` to work with a second non-array argument
- Fix `floor()` to work with integer strings
- Fix `is_integer()` to return true if passed integer strings
- Fix `is_numeric()` to return true if passed integer strings
- Fix `merge()` to work with empty strings
- Fix `pick()` to raise the correct error type
- Fix `uriescape()` to use the default URI.escape list
- Add/update unit & acceptance tests.
Merge pull request #252 from hunner/release_4.2.0

Release - 4.2.0
Prepare a 4.2.1 release.
Merge pull request #254 from apenney/421

Prepare a 4.2.1 release.
(MODULES-905) Add bool2str() and camelcase() for string manipulation

Python likes to have its constants Capitalized, and the capitalize
function only understands strings... so I shave a yak.

bool2str will convert a boolean to its equivalent string value,
and camelcase extends on uppercase & downcase to convert an underscore
delimited string into a camelcased string.
(maint) Add bool2str & camelcase spec tests
(PUP-2571) add 'before' functionality to file_line

file_line supports adding lines after a match, but there are use cases when
having "before" would be useful. For example, in Debian-based OS's, the last
line of /etc/rc.local is "exit 0" it's an incredible pain to deal with
that scenario today.

This commit adds a 'before' parameter to the file_line type, and implements
it for the ruby provider.
Merge pull request #256 from stbenjam/2571-before

(PUP-2571) add 'before' functionality to file_line
Merge pull request #255 from mckern/enhancement/master/camelcasedembools

(MODULES-905) Add bool2str() and camelcase() for string manipulation
Revert "Merge pull request #256 from stbenjam/2571-before"

This reverts commit 8499ebdb7f892f2623295058649c67a5553d4732, reversing
changes made to 08b00d9229961d7b3c3cba997bfb35c8d47e4c4b.
Merge pull request #257 from apenney/revert-before

Revert "Merge pull request #256 from stbenjam/2571-before"
(MODULES-905) Narrow the confinement in bool2str

Previously, bool2str() accepted a broad array of boolean values and
bare strings, without any attempt to validate that the strings in any
way resembled "true" or "false" (or any of the other values bool2num()
accepts). This commit narrows the input confinement to TrueClass and
FalseClass, which means that bool2str() will only interpolate
strict boolean values now.
(MODULES-905) Extend spec tests for bool2str

The extended spec tests validate that the common types of values
that could be passed to bool2str() are rejected.
Merge pull request #258 from mckern/enhancement/master/camelcasedembools

(MODULES-905) Narrow the confinement in bool2str
Merge pull request #8 from puppetlabs/master

Upstream pull