(FACT-163) refactor fact [file] loading

This patch simplifies the logic for locating and loading fact .rb files.  It
reduces the search space for a fact files to only the configured search dir
paths (non-recursively).
Merge pull request #578 from jhoblitt/fact_loading

(FACT-163) refactor fact [file] loading
Merge branch 'stable' into facter-2
(maint) restrict redcarpet gem to <= 2.3.0

Per the tag annotation from the redcarpet 3.0.0 release, 2.3.0 is the last
version compatible with ruby 1.8.7.

https://github.com/vmg/redcarpet/releases/tag/v3.0.0
(fact-163) Remove relative path for FACTERLIB paths (which was unintentional)
Merge pull request #583 from kylog/issue/fact-163/fix-up-windows-specs

(fact-163) Remove relative path for FACTERLIB paths (which was unintenti...
(fact-163) Fix path construction in load_all
(fact-79) Document builtin facts in a json schema

Prior to this commit there wasn't validatable documentation
for the types of built-in facts.  This schema matches against
the type of built-in facts (at least on the platforms I tested:
osx, precise, fedora18).

This initial schema only uses primitive types (string, integer,
boolean) but could be enhanced with enumerations (e.g. for kernel,
which only assumes a limited set of values) or tighter regexes
(e.g. for network addresses that follow a fixed pattern).
(fact-79) Add facter_json_output_validate.rb

Prior to this commit there was no validation of facter output
against a schema.  This commit adds an acceptance test to validate
facter output against the recently added schema.

Note that the acceptance test is currently confined off of a
number of platforms, notably those which come with ruby 1.8.7,
since that doesn't include the json gem. We should remove those
confines as acceptance jobs are enhanced to add the gem to those
platforms.

This also adds a quicky validate.rb script for dev use.
(fact-79) Commonize non-nil physicalprocessorcount values to string

Prior to this commit, physicalprocessorcount returned an integer on
non-sunos platforms, but a string on sunos. Also, all the other
processorcount-related facts returned strings regardless.

For consistency cross-platform and cross-processorcount-facts,
this changes all physicalprocessorcount values to be strings.

Note this doesn't change the one case where physicalprocessorcount
returns nil, as that is being addressed by fact-107.
Merge branch 'facter-2'

Conflicts:
	lib/facter/util/loader.rb
	spec/unit/util/loader_spec.rb
(maint) Add newlines to all files (whitespace only)

Without this patch there are a number of files that do not have
newlines.  This is a problem because it makes it difficult to use
`perl -pl -i -e ...`
(maint) Remove rspec from shebang lines

Without this patch Ruby 1.9 is still complaining loudly about trying to parse
the spec files.

I'd prefer to remove the shebang lines entirely, but doing so will cause
encoding errors in Ruby 1.9.  This patch strives for a happy middle ground of
convincing Ruby it is actually working with Ruby while not confusing it to
think it should exec() to rspec.

This patch is the result of the following command run against the source tree:

    find spec -type f -print0 | \
      xargs -0 perl -pl -i -e 's,^\#\!\s?/(.*)rspec,\#! /usr/bin/env ruby,'
(fact-79) Enforce that all built-in facts must have a schema defined
(fact-79) Add a README.md for the schema and clearer validate.rb output
(Maint) Remove loader test dependence on ENV

Previously the test for checking that FACTER_* environment variables get
turned into facts was sensitive to the actual environment variables with
which the test ran. This caused incorrect test failures if there was
such an environment variable during the test run. This changes the
loader to be able to be given the environment hash that it should look
at and changes the tests to stop relying on the environment for testing.

Conflicts:
	lib/facter/util/loader.rb
	spec/unit/util/loader_spec.rb
(Maint) Remove unneeded mocking

There were mocks for something called 'settings', which were never used.
This removes them.
Document Facter API with YARD

This adds YARD documentation with `@api public` tags to the public API for
facter. This is a first pass, so it's probably missing some things that should
be considered public.

Conflicts:
	lib/facter/util/fact.rb
	lib/facter/util/resolution.rb
Use the API to test resolution weight
(doc) Update COMMITTERS and CONTRIBUTING

Without this patch the documentation describing our workflow and process
is out of date for Facter.  This is a problem because community
contributors and people new to Puppet Labs have a more difficult time
learning how to submit contributions and merge contributions into the
codebase.

This patch addresses the problem by copying the COMMITTERS and
CONTRIBUTING documents from Puppet and customizing them specifically to
Facter.

[ci skip]