(maint) Add execution::each_line for efficiently processing output.

Currently, execute() buffers the entire output from the child process.
Sometimes the resulting string is passed directly to the each_line that
takes a string.

To improve efficiency, this commit implements an execution::each_line
function that passes each line of output to a callback function without
buffering the entire output.

Additionally, when the callback function returns false to indicate it is
done processing the child process outpout, we close the read pipe. This
in turn may signal SIGPIPE in the child process so that it exits sooner.
(maint) Remove debug output from test.

A new test was added in a previous commit that used
cout to debug values being read in from a file.

The statement to output the lines should not have
been included in the test.
(maint) Allow split utility function to return empty entries.

There are valid cases for splitting a string and desiring empty
values returned in the vector.

For example, splitting "FOO=" (delimiter is '=') for an environment
variable would have previously return { "FOO" }.  This is still the
default behavior.

Now with an optional parameter, split can return { "FOO", "" }.
(CFACT-35) Implement environment merging for child processes.

Implement the merging of environment variables for the execution::execute
and execution::each_line functions.

This also sets LANG and LC_ALL to "C" if not explicitly specified to the
functions.