(CFACT-91) Test for and filter trailing separators in PATH

Trailing separators in PATH would be concatenated with a relative path
in filesystem::path constructors, which would give a valid relative
path. This led to environment-dependent behavior, as relative paths are
not normally accepted by 'which'. Fix this by stripping trailing
separators and testing that we don't have empty path segments.
(maint) Prevent Ruby's SIGINT handling.

Prevent Ruby's SIGINT handling so that it doesn't raise an exception but
instead invokes the system default handler.  This gives consistent
Ctrl+C processing.
(CFACT-91) Fix external-dir with a relative path

Allow a relative path to be specified on --external-dir. We still
enforce internal APIs for external facts to use absolute paths. Fixes a
bug that allowed it to work depending on environment setup.
Merge pull request #158 from peterhuene/maint

(maint) Prevent Ruby's SIGINT handling.
(CFACT-135) Fix forked process cleanup if execv fails.

When execv fails, we call exit to immediately exit the child process.
In C++11, exit calls global destructors.  One of the destructors being
called is facter::ruby::api to cleanup the Ruby VM.

However, the Ruby VM appears to have process affinity and doesn't like
having ruby_cleanup called from a forked child process.

To work around the fact that some stdlib implementations don't have
quick_exit implemented, we disable the api object from performing any
cleanup in the forked process.
Merge pull request #159 from MikaelSmith/bug/master/CFACT-91-fix-external-dir-relative-path

(CFACT-91) Fix external dir relative path
Merge pull request #160 from peterhuene/forkedvm/fix

(CFACT-135) Fix forked process cleanup if execv fails.