(PUP-1413) Add 'touch' command to Augeas provider

The touch command works like its POSIX namesake, only creating the node in
the Augeas tree when it doesn't already exist, and creating it with a NULL
value.  The behaviour is copied from augtool (augrun).
(PUP-3024) Add deltarpm_percentage and deltarpm_metadata_percentage to yumrepo

This patch adds deltarpm_percentage and deltarpm_metadata_percentage to the
yumrepo type.
(maint) Add error message if GitURI is nil

Prior to this commit, if the options param was left out from the
ci:test:git rake task, it would only tell the user that nil was an
unrecognized task i.e.

`#<ArgumentError:  is not recognized.>`

This was not helpful in the case where that uri variable was nil.

This commit changes that by adding a ArgumentError check to see if that
git uri is nil.
(maint) Throw error if install urls are missing from final options

Prior to this commit, if the git urls were missing from the
final_options hash, the rake task would try to do a match on a nil
object and fail. This commit fixes that by raising an ArgumentError if a
url is nil.
(maint) Run on new container based travis infrastructure
(PUP-3697) Default key to certname for find action

If no key is supplied to the find action to indirector based faces,
default it to the certname. This way things such as `puppet facts find`
work without inventing a key to find facts for.
(PUP-3698) Make find the default action for facts

Finding facts is by far the most common action for the facts face so it
should be the default.
Quote file modes as recommended

Add some quotes around strings that occur in block comments.  These
block comments are converted into HTML documentation that is published
on the official Puppet documentation Web pages at Puppetlabs.  It is
important that the examples be correct, because Puppet users are very
likely to uses these examples as a reference.

I noticed this because my colleagues started putting quotes around file
modes (e.g. mode => '0644').  From looking at the examples, I thought
the correct way to write these were as numbers.  But when I looked up
the documentation on the "mode" attribute of the "file" resource type,
it clearly says:

    This value should be specified as a quoted string; do not use
    un-quoted numbers to represent file modes.

So my colleagues seem to be right, but the examples are wrong.  This is
what the commit is trying to fix.

I also noticed that in one of the examples, the string values of the
"owner" and "group" attributes weren't quoted.  This seems to be an
error as well, so I fixed that too.

Another small change to the examples is that the numeric file modes are
written with four digits, i.e. with leading zeroes.
(PUP-3698) Don't default to certname for the resource_type face

For this face we don't want to default to the certname like other
indirector based faces. Instead we want the user to always supply a
argument.
(PUP-3698) Update documentation for affected faces

Update the documentation for certificate_request, status and
certificate_revocation_list.

status and certificate_revocation_list no longer requires a dummy
argument.
certificate_request now defaults to find the CSR for the current node
certname.
Merge pull request #3425 from dalen/travis_container

(maint) Run on new container based travis infrastructure
Merge pull request #3426 from sleinen/docs-quote-file-modes-2

(docs) Quote file modes as recommended
Merge pull request #3337 from dalen/improve_facts_face

(PUP-3697, PUP-3698) Improve facts face
* (PUP-3697) Default key to certname for find action
* (PUP-3698) Make find the default action for facts
* (PUP-3698) Don't default to certname for the resource_type face
* (PUP-3698) Update documentation for affected faces
(maint) Enable rubocop checking for shadowed variables

Previously, we allowed variables to be shadowed by variables
of the same name at local scope. This can make for confusing
reading to someone new to the code (and can potentially indicate
logic errors).

So this commit enables rubocop checking for shadow variables. It
also fixes (by renaming) all extant shadowed variables. Naming
is hard, but a best effort was made.
Merge pull request #3377 from domcleal/tickets/master/pup-1413-augeas-touch

(PUP-1413) Add 'touch' command to Augeas provider
Merge remote-tracking branch 'upstream/pr/3427'

* upstream/pr/3427:
  (maint) Enable rubocop checking for shadowed variables
(PUP-3016) use puppet helper in acceptance tests

Use the puppet() helper function instead of assuming puppet is in the
path. After installing puppet on a Windows system in particular, it's
path is not reflected in the shell environment. Using puppet() lets
Beaker figure out how to execute the puppet binary.
Retain less-than argument for version of module installed.

Get around having to quote the whole command by inserting a space
after the version operator.  sigh.

In our current windows-cygwin overloaded ENV one has to single quote the entire
'puppet module #args <options>' command, which is not currently possible
with the helper (thus the use of Command in the previous version of this test).

The only other way i could get it to work is by quoting the version
string, but this requires a space after the operator. Otherwise
windows/cygwin says "file not found".

closes #3342
(maint) Allow git URI to be specified in local_options.rb

Previously, the Rakefile assumed if you were doing a `git` type
acceptance test that the repos to install were of the form
`puppet#stable` or just `puppet`. In either case, environment variables
GIT_SERVER, FORK, and SHA were used to generate the actual URI, e.g.
git://<server>/<fork>#<sha>

However, if the repo to install was an actual URI, then the Rakefile
would silently map each repo to `nil`, and would trigger the error
message added in 099b0cbd6.

This scenario would always happen if you ran the tests once, and copied
`merged_options.rb` to `local_options.rb`, and attempted to re-run the
tests with the same configuration as last time. In that case,
`local_options.rb` would contain URIs of the form:

   :install=>
     ["git://github.com/puppetlabs/facter.git#stable",
      "git://github.com/puppetlabs/hiera.git#stable",
      "git://github.com/puppetlabs/puppet.git#master"
     ],

This commit modifies the Rakefile to preserve the specified URI if it
doesn't match one of our "short" versions, e.g. puppet#stable. This only
applies to `git` type tests.
Merge pull request #3429 from er0ck/fix/master/PUP-3016-use_puppet_helper_in_acceptance_tests

(PUP-3016) use puppet helper in acceptance tests
Merge pull request #3400 from juniorsysadmin/deltarpm-percentages

(PUP-3024) Add deltarpm_percentage and deltarpm_metadata_percentage