(#22233) Warn but do not fail if find gce facts without json lib

Previous patch to GCE would fail outright if there were GCE facts to
parse, but we had no JSON library.  It is better if Facter is allowed to
gather what facts it can rather than failing outright, so this change
just warns that we cannot load GCE facts due to missing JSON gem,
similar to how we warn if there is a problem parsing the GCE facts.

Also fixes up specs a little for consistency and to remove unused
references.
Merge pull request #528 from jpartlow/issue/master/22233-gce-warns-but-does-not-fail-if-missing-json

(#22233) Warn but do not fail if find gce facts without json lib
(maint) Cleanup whitespace errors
Clean up some trailing whitespace.
(#22233) Remove filters for the tests

Without this patch an example is excluded entirely if the `json` library
is not available.  If it is available then a related example is removed
instead.  This is a problem because it isn't clear why the examples are
being removed when the tests are run.

This patch addresses the problem by marking the first test as pending if
the json library is not available.  The second test always runs with
this patch applied because the patch mocks the behavior of JSON being
absent even if it is present during the test.
(#22233) Replace expect().to with .should

Without this patch we're seeing test failures on the Solaris 10 spec
system.  These failures are caused by the system not respecting the
dependencies specified in the Gemfile.  This patch addresses the problem
by changing the tests to use rspec 2.9 compatible syntax since this is a
faster route to a green build than changing the spec system itself.

This patch will be reverted once the Solaris 10 spec system has been
updated to respect the Gemfile.
Merge branch '22233_cleanup'

* 22233_cleanup:
  (#22233) Replace expect().to with .should
  (#22233) Remove filters for the tests
  (maint) Cleanup whitespace errors Clean up some trailing whitespace.
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (#22349) Read from user's home when non-root
  (#22334) Use Facter's logging system for warn
  (#15586) Use OptionParser for help
  (Bug #22238) Remove EOL f17

Conflicts:
	spec/unit/ec2_spec.rb
	spec/unit/util/loader_spec.rb
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (#22349) Qualify WinBuiltinAdministratorsSid constant
  Maint: Only try to install json gem for ruby 1.8
Merge branch 'stable'

* stable:
  (packaging) Update FACTERVERSION to 1.7.3
(#21604) Detect xen virtual fact on windows
(maint) Refactor windows virtual fact for readability
Merge branch 'pull-495'

This fixes GH-495
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (#20301) Handle different error in ruby 1.9
  Maint: Don't try to install json gem on Windows
(maint) Remove :focus => true from specs
(#22233) Conform to code standards

Without this patch the documentation for
Facter::Util::GCE.with_metadata_server does not match the
implementation.  The implementation appears to have been copied from
Facter::Util::EC2.with_metadata_server which does take a block as an
argument.  The GCE implementation does not take a block but the
documentation mentions it does.

This is a problem because we have two methods of the same name that have
different designs, which is confusing.

This patch addresses the problem by modifying the GCE implementation of
with_metadata_server to accept a block.  The reason the block was
originally removed was likely because all of the metadata necessary to
define the facts may be gathered with a single call.  Unlike EC2,
there's no need to first check if the service is responsive then call
back out to the service to get the response.  In GCE if the service is
responsive then the initial response is all that's required.

This patch augments the original design by requiring the block passed to
with_metadata_server to accept a single string argument.  The method
will pass the body of the initial response to the block, which will
usually be JSON, allowing the block to define the fact values based on
the initial response rather than requiring a subsequent request.
(#22233) Clean up the rake collect:gce_metadata task

Without this patch the GCE metadata collection task which produces
fixture data duplicates some method names in the :collect rake
namespace.  This patch addresses the problem by separating out the
method names to avoid collision and separating out the EC2 and GCE tasks
into their own files.
(#22233) Remove unused GCE fixtures

These fixtures aren't actually being used by the tests and as such
should not be included in the codebase.
(#22233) Merge branch '22233_improve'

* 22233_improve:
  (#22233) Remove unused GCE fixtures
  (#22233) Clean up the rake collect:gce_metadata task
  (#22233) Conform to code standards
  (maint) Remove :focus => true from specs
Merge branch 'stable'
(#7621) - Added operatingsystemrelease support to Windows

Without this patch, the fact 'operatingsystemrelease' was set to
kernel version fact for all the windows flavors. This patchs brings
the option of having the common release name for the windows
machines, something that can help in writing specific puppet
manifests and other tasks according to the specific windows version.

The patch is based on a WMI call to Win32_OperatingSystem. This
aproach has some drawbacks but I think the code is simple and
easy to mantain and update. Anyway, extracting the windows version
is not an easy task for Microsoft as well:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724429%28v=vs.85%29.aspx