(CFACT-44) Implement Ruby Facter API.

Implementing the Ruby Facter API in C++:
Facter.add
Facter.define_fact
Facter.value
Facter.[]
Facter.fact
Facter.debug
Facter.debugonce
Facter.warn
Facter.warnonce
Facter.log_exception
Facter::Util::Fact.name
Facter::Util::Fact.value
Facter::Util::Fact.define_resolution
Facter::Util::Fact.resolution
Facter::Core::Execution.which
Facter::Core::Execution.exec
Facter::Core::Execution.execute
Facter::Core::Execution::ExecutionFailure
Facter::Util::Resolution.confine
Facter::Util::Resolution.has_weight
Facter::Util::Resolution.name
Facter::Util::Resolution.timeout=
Facter::Util::Resolution.setcode

Aggregate facts are not yet implemented.
(maint) Reset the boolalpha format flag on the stream.

When writting boolean_values to an ostream, make sure to reset the
alphabool flag on the stream after writting the value.
(maint) Fix string value output quoting.

When outputting string values, we should default to having them quoted
instead of always quoting values in debug output.  This makes it easier
for users to differentiate between values that aren't strings and values
that are.  For example, a boolean value of false should be printed
without quotes, but a string value of "false" should be printed with
quotes.

Refactoring the writing of values to a stream to control
whether or not string values should be quoted.
(CFACT-44) Add unit tests for Ruby API.

Adding unit tests to test various parts of the Ruby API.