(#21831) Ensure SecureRandom.uuid is available

Background:
Ruby's stdlib includes SecureRandom.  As of 1.9.3 SecureRandom
includes a uuid method, which is essentially a convenience
wrapper around the base random number generation.  1.8.7 did not
provide the uuid method.

Changes:
- Monkey patch SecureRandom to add the uuid method if it's not there
 (copy-paste of the code from 1.9.3)
- Add test to verify that there is a uuid method and that it returns a
  properly formatted uuid string.
(#21831) Generate a UUID to allow matching a report to a catalog

In Puppet::Configurer, generate a 'transaction_uuid' using SecureRandom.uuid.
For the catalog retrieval, pass that uuid into the 'fact_options' hash which
generates the query string for the catalog request.  For the report, set the
report's variable, also named 'transaction_uuid,' and serialize that to_pson.

Also:
- In configurer.rb, rename fact_options to query_options since the hash ends
  up including more than just the facts.
- Add spec tests for transaction uuid modelled on those for configuration version
(#21831) Add/use get_transaction_uuid method

Rather than inline insertion of the transaction uuid, factor
out a method, get_transaction_uuid, which returns a hash containing
the transaction_uuid and merge that into the catalog query_options
hash.
Merge pull request #1793 'kylog/issues/master/21831-txn-uuid'

* kylog/issues/master/21831-txn-uuid:
  (#21831) Add/use get_transaction_uuid method
  (#21831) Generate a UUID to allow matching a report to a catalog
  (#21831) Ensure SecureRandom.uuid is available