Merge pull request #37 from peterhuene/feature/yaml

(CFACT-23) Implement YAML output.
(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.
Setting cfacter to use the Apache 2.0 License, like other Puppet Labs 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.
(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.