(CFACT-44) Replace cfacter gem with libfacter Ruby API.

This major refactoring accomplishes two things:

* Allows for Ruby objects to be created from Ruby and have the underlying C++ object automatically get created and associated with the Ruby object.

* Moves the Ruby gem implementation into libfacter.  This eliminates the "double switching" being done currently where the gem under Puppet replaces the Facter implementation and then libfacter replaces that implementation with its Ruby API.  This also eliminates the need for a callback mechanism from C++ to Ruby to populate structured facts; the libfacter Ruby API can now return Ruby array and hash objects directly.

This should complete the major Ruby API implementation work.  A corresponding change is required to Puppet to match the gem changes (to be submitted as PUP-3050).
Alas, no.  That documentation barely covers a number of these functions.  These "consult the MRI documentation" comments are a copout so that I don't have to describe each and every function or type we're importing from libruby.  http://rxr.whitequark.org/mri/source has primarily been my documentation :/