(packaging) Add packaging artifacts for cfacter
(RE-2162) Initial packaging for debian

This commit adds the basic packaging for both debian wheezy and rhel 7.
The wheezy packaging is building successfully, but the rhel7 may need
some work, and the underlying libraries need to be recompiled with
-fPIC. This depends on https://github.com/puppetlabs/packaging/pull/303
being merged to support using the build-tools repo for the debian
packages.
Merge pull request #52 from haus/ticket/master/re_2162_add_cfacter_packaging

(RE-2162) Initial packaging for debian/rhel
(CFACT-27) Add virtual and is_virtual facts for OSX VMs.

Adding virtual and is_virtual facts for OSX virtual machines.
Detects VMware, VirtualBox, and Parallels.
(maint) Add OSX and Ubuntu dependency install instructions to README.

Adding a section to install cfacter dependencies via homebrew for OSX.
Adding a section to install cfacter dependencies via apt for Ubuntu.
(CFACT-27) Add virtual and is_virtual facts for Linux.

Adding detection of many different virtual machine hypervisors under
Linux.
Merge pull request #53 from peterhuene/facts/virtual

(CFACT-27) Add virtual and is_virtual facts for OSX and Linux.
(maint) Prevent unnecessary log message formatting when logging isn't enabled.

Currently we call logging::log to format a log message and then do nothing
with the message from within the LOG4CXX macros.

The fix is to properly check to see if logging is enabled from within the
LOG_MESSAGE macro.

Also adding some "unlikely" optimization hints when doing these checks.
(maint) Add testing of string each_line short-circuiting.

Add missing check for returning false from the each_line callback.
(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.
Merge pull request #54 from peterhuene/execution/enhancements

(CFACT-35) Implement environment merging for child processes.