(#7559) Add Facter::Util::EC2.with_metadata_server method

Without this patch Facter has no clear way to define the EC2 related
facts in a robust and reliable manner.  This is a problem because Facter
needs to run as robustly on nodes that are inside of EC2 as it does on
nodes that are outside of EC2.

The root cause of the problem is that we have no way to introspect the
system to determine if we're on EC2 or not without making a network call
to the metadata server. [1]  This means that either non-EC2 nodes will
suffer a timeout trying to connect to a non-existent metadata server or
EC2 nodes will suffer from facts not being defined.

This patch addresses the problem by adding a new utility method with the
following behavior.  A block is accepted and will be executed only under
the following conditions.  The block should execute whatever code is
necessary to define the EC2 facts themselves.

1: Do not execute if the virtual fact is not "xenu"
2: Do not execute the metadata server does not respond in 100ms after
three consecutive attempts.

[1] https://forums.aws.amazon.com/thread.jspa?threadID=62617
WIP - Define ec2 metadata facts