(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.)
As much as I like the sentiment of undef dying, I think a positive assertion here might be better.