(PUP-3718) Make defined function handle qualified variable names

The defined function can answer if a variable is defined. There
were however no tests for qualified variable names. The implementation,
when given a qualified name simply tried to lookup the complete name
in its own scope which naturally failed.

This commit adds logic to check if a variable is qualified in the
Scope#exist? method, and then mimics the behavior of a variable
lookup by splitting the name, then looking up the class and its scope
and finally delegating the exist? call to that scope.

This is made somewhat complicated when testing due to the fact how
scopes are wired (to find other names scopes). The test that checks for
the existence of a top scope variable now sets this up as if the main
class (called '') had been evaluated.
(PUP-3718) Make it clear that exist?(varname) returns boolean

There was a code path that did not ensure that that the return
from exist?(varname) was a boolean. Now a test is added, and nil
result is always turned into a boolean.

This is primarily done to ensure against leaking values / object
that could be considered thruthy if this code changes. (It would
be harmeless to return nil/false or true as the code stands now,
but this commit makes it explicit that a boolean result is expected.
(PUP-3756) Only chown log file when running as root

Previously, if you specified a log file destination on non-windows
platforms, puppet would attempt to chown the file to the `Puppet[:user]`
and `Puppet[:group]`. However, this will only work if puppet is running
as root.

This commit change the log file destination to only chown when running
as root. It continues to skip the operation on Windows.
(MAINT) Remove PUPPET_LOADED from Gemfile

Remove the use of the PUPPET_LOADED environment variable from
the Gemfile, as the bug requiring its use has been eliminated by
Puppet Server's upgrade to JRuby 1.7.17.
(maint) Update ruby sha used to build

We've updated the certs included in ruby to access rubygems.org.
Since the website has updated their certs, we were behind, and
installing gems using the provided package of rubygems would fail. This
commit updates the sha of puppet-win32-ruby we are pulling in to include
in the msi build. This will provide the additional certs for use, and
allow people to access rubygems.org via the provided rubygem package.
Merge pull request #3419 from melissaanne/stable

(maint) Update ruby sha used to build
Merge pull request #3356 from hlindberg/PUP-3718_defined-function-misses-qualified-variables

(PUP-3718) Make defined function handle qualified variable names
(QENG-1592) undefined method `assertions' in Beaker 2.0.0

- update to work with beaker 2.0, maintain 1.x backwards compatability
Merge pull request #3416 from joshcooper/ticket/master/PUP-3756-only-chown-as-root

(PUP-3756) Only chown log file when running as root
(PUP-3769) resource/service/should_not_change_the_system should only run on agents

Use the agents object to more definitely run against the proper
machines.  This test would previously error on windows runs after the agent
role is removed from the master for windows tests.  This change fixes
this issue.
(PUP-3378) Don't require puppet resource service output to be the same

Previously, the acceptance test would execute `puppet resource service`
twice, and compare the output to ensure puppet did not change the state
of the system. This was done because in the past the `init` service
provider would invoke the status command on all scripts in /etc/init.d,
including /etc/init.d/reboot.sh, which would unconditionally reboot the
system[1]

However, this test is not reliable as some platforms like fedora 19 &
20 have services that change state between the two puppet runs, e.g.
NetworkManager-dispatcher.service, and this behavior is unrelated to
puppet.

This commit removes the requirement that the `puppet resource service`
command be identical. We continue to execute `puppet resource service`
twice and compare the output of the ssh(d) service. We also have specs
to ensure that the `init` service's instances method excludes dangerous
scripts.

This commit also changes the test to use beaker's `puppet` DSL method,
which is the preferred way of executing puppet in acceptance tests.

[1] http://projects.puppetlabs.com/issues/14615

Paired-with: Eric Thompson <erict@puppetlabs.com>
Merge pull request #3424 from joshcooper/ticket/stable/PUP-3378-less-fragile-service-test

(PUP-3378) Don't require puppet resource service output to be the same
Merge branch 'stable'

Conflicts:
	acceptance/tests/resource/service/should_not_change_the_system.rb
Merge pull request #3420 from fpringvaldsen/remove-PUPPET_LOADED

(MAINT) Remove PUPPET_LOADED from Gemfile
Merge remote-tracking branch 'upstream/pr/3418'

* upstream/pr/3418:
  (QENG-1592) undefined method `assertions' in Beaker 2.0.0
(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.