(PUP-914) Use resource ref when writing dot files

Use the `ref` attribute of a resource instead of `to_s`.

Internally, Puppet uses the `ref` attribute to identify and locate resources
within a catalog. This patch makes use of `ref` to identify nodes in graphviz
output as some Types, notably Whit, override `to_s` and either destroy or
obscure the identity of resource nodes.
(PUP-2609) Make copying permissions on Win an error

Copying permissions on Windows are problematic, so it isn't done. Change
the deprecation warning about source_permissions => use/use_when_creating
to an error.
(PUP-3130) Remove hidden _timestamp fact

Puppet generates a timestamp when a Puppet::Node::Facts object is
created. During PSON serialization (from agent to master), the timestamp
is serialized separately from the hash of fact values.

Previously, when the master deserialized the facts from JSON, it would
convert the timestamp to a hidden fact named `_timestamp`, inline with
the normal facts. As a result, there was a `_timestamp` variable
available in top-scope.

The `_timestamp` fact was added in 5aa4440b circa 2007. It was
originally called `_puppet_timestamp`, and then renamed to `_timestamp`
in a6fe7005.

This commit modifies the Fact object so that it no longer adds a
`_timestamp` fact during deserialization. Note the timestamp is still
available, via the Facts#timestamp method, it's just not a fact.

This commit also removes the magic behavior of stripping facts with
leading underscores. This improves performance because we no longer
duplicate the values hash, or apply a regex to every fact key.

It also preserves behavior of the compiler, added in fb5f859cf4, which
updates the facts timestamp prior to saving them.
(PUP-2609) Update Metadata default permission

Update Metadata's default permission model to ignore source permissions,
and remove unreachable code. Update spec tests for new behavior.
(maint) Remove some shims for compat with 0.25.x
(maint) Report rubocop failures correctly

Previously rubocop would run and find defects, but the exit
code was not reported. The Jenkins job was relying on the exit
code, so would never catch failures.
(maint) Exclude vendor directory from rubocop analysis
(maint) Update for rubocop 0.26.1

Two changes for 0.26.1:
* some cops changed to the new 'Metrics' namespace, so accomodate that
* there are some new cops, all of which we'll ignore at least for now
(PUP-3130) Add deprecation yardoc

Document that the strip_internal method is deprecated, and to use the
values method instead.
Merge pull request #3226 from MikaelSmith/task/master/PUP-2609-Windows-error-on-use-source-permissions

(PUP-2609) Windows error on use source permissions
Merge pull request #3214 from joshcooper/ticket/master/PUP-3130-remove-hidden-timestamp

(PUP-3130) Remove hidden `_timestamp` fact
Merge pull request #3236 from kylog/maint/rubocop-fixups

Maint/rubocop fixups
Merge pull request #3237 from kylog/maint/remove-reference-stubs-for-0.25-compat

(maint) Remove some shims for compat with 0.25.x
(maint) Update Gemfile to reflect dependency on newer rubocop version
(maint) Fix debug and error output

Every time we did set up a zone we crashed at the debug line. Now it works
(maint) Remove dead code in lib/puppet/reference
Merge pull request #3244 from kylog/sulaweyo-patch-1

(maint) Fix debug and error output
(PUP-3277) Ensure that user and group are set in func4x test

Without these settings, the puppet apply will reset Puppet directories
and files as root.  This doesn't impact a foss test run, but a pe test
run using the puppetserver will fail to start up master threads unless
there is an intervening agent or apply run with a puppet.conf that has
user/group with service account settings.  The puppetserver master
threads were failing because of permissions on the ca.pem.
Merge pull request #3245 from kylog/maint/remove-dead-code-in-reference

(maint) Remove dead code in lib/puppet/reference
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (PUP-3277) Ensure that user and group are set in func4x test