(PUP-480) Put the nail in :undef's coffin

This changes the evaluation of a LiteralUndef to nil from :undef.
As a consequence, there were minor adjustments needed to the Closure's
call_by_name support to get the correct semantics for "missing"
parameters.

Tests are also added to ensure that :undef does not sneak into arrays or
hashes in the 4x function API.

This commit contains a cheat for epp and inline_epp functions as they
need to receive their arguments without transformation. When that is
fixed (PUP-2845) the cheat in runtime3_support#call_function() should be
removed.

:undef is still used in the "puppet/pops" section of the code (mainly
for reasons of transforming to 3x, and if :undef symbols leak from 3x.)
(PUP-480) Change name to assert_no_undef

Changes the name of die_undef_die test assertion function to
assert_no_undef.
(PUP-480) Remove :undef use in slice function

The use of :undef is now replaced with nil, and mentioned as undef
instead of :undef in the documentation.
(PUP-480) Change use of :undefined to :unspecified to avoid confusion

The use of this symbol in e4_parser_adapter has nothing to do with
:undef / nil, it is an internal state (what to parser file content
or content of string).
(PUP-480) Fix Resource.to_hash to also filter nil values

Resource.to_hash currently filters on :undef only. Now it also
filters out parameters that have an explicit nil value set.
(PUP-480) Change Scope.to_hash not not include nil values

This makes scope equate :undef and nil when asked to produce a hash
of values.
(PUP-480) Make injector lambda calls use nil instead of :undef
(PUP-480) Remove use of :undef in producers

Producers, when evaluating puppet logic always do it the 4x way
and do not need to translate nil to :undef.
(PUP-480) Modify lookup function to not pass :undef to puppet evaluation

Since the evaluation of puppet logic in the binder is always done
with the 4x evaluator, there is no need to transform nil to :undef.
owever since 3x *may* call with :undef these should be translated to
nil.
(PUP-480) Change AccessOperator to not consider :undef from evaluator

This changes the AccessOperator logic to not consider :undef being
prouced by the evaluator (as key). It continues to support a hash with a
value stored under the key :undef and making that return that
value is accessed as $hsh[undef]. It is expected that hashes
follow the 4x convention (nil), but this attempts to also work
if the hash was constructed with 3x logic and uses :undef instead of
nil. (nil has priority if there is both a nil and a :undef key in
the same hash)
(PUP-480) Clarify why nil and :undef are both supported
(PUP-480) Remove stale comments
(PUP-480) Change -= eval to assign nil instead of :undef for no result
(PUP-480) Add comments to clarify use of :undef
(PUP-2777) Fix Gemfile test for x64 platform

 - Previously it was assumed that the :x64_mingw platform was only
   defined in the Bundler DSL as a valid platform on a x64 Ruby.
   However, this is not actually the case.  Due to a coincidence, during
   testing, Bundler 1.3.5 was used on Ruby 1.9.3 x86 and that old
   Bundler version didn't have a :x64_mingw platform.  Upon upgrading
   to Bundler 1.6.3, :x64_mingw became defined on Ruby 1.9.3 x86.
   So the check was adjusted to what Bundler uses internally to
   determine if the current platform is running on x64.
Merge pull request #2814 from hlindberg/PUP-480_die_undef_die

(PUP-480) Put the nail in :undef's coffin
Merge pull request #2825 from Iristyle/ticket/master/PUP-2777-fix-Gemfile-x64-check

(PUP-2777) Fix Gemfile test for x64 platform
(PUP-2873) Make puppet master compile honor logdest

puppet master --compile right now unconditionally spews logs to standard
output which makes it slightly more difficult for someone to use the
actual result of the command which is the catalog. Remove the
unconditional redirection to :console and honor whatever the configured
log destination is (either via the --logdest argument or configuration)
Merge pull request #2637 from akosiaris/master

(PUP-2637) Make puppet master compile honor configured logdest