(maint) Fix r-value overloads of string utility functions.

The r-value overloads were returning an l-value reference which meant that despite being used, copy assignment/construction would still occur.  Fixing these functions to return an r-value reference.
(CFACT-19) Implement cfacter gem.

Re-implementing the cfacter gem.
Removing JSON dependency on the gem since we now use callbacks to
populate a hash instead of emitting and parsing a JSON string.
projects.
Adding Rakefile to gem directory with tasks for packaging and installing
the gem.
Adding tasks for running specs.
Adding specs that do some basic validation of the cfacter gem.
Updating README for instructions on how to build, test, and install the
gem.
(maint) Use Apache 2.0 license.

Adding a LICENSE file like we have for other Puppet Labs projects.

cfacter is now under the Apache 2.0 License.
(maint) Change static maps to vector of tuples.

There's a few places where we declare a static map but then only iterate
over the map, effectively treating it as a vector.  Replacing those
instances with a vector<tuple<>>.
(maint) Add double_value to the facter type system.

Adding a typedef scalar_value<double> to double_value.
Adding function to handle converting to a JSON number value.
Adding tests for double_value.
(CFACT-12) Implement external facts in YAML files.

Implementing external fact support for facts defined in YAML files.
Adding --external-dir and no-external-dir options to cfacter.