(PUP-2857) Add a type for default expression called Default.

Before this change, the special value produced by a default expression
was treated as a Ruby['Symbol'] (later changed to Runtime['ruby',
'Symbol']). This commit changes this to produce an instance of a
new type called Default.

The Default type is an Any, but is not assignable to anything else.

This also removes the inference of :undef to PNilType (a.k.a Undef
in the Puppet Language). The reason for this, now that :undef is
never used by the evaluator. Thus, if someone were to return :undef, or
have it in a data structure, the type calculator would falsely
inferr it as an Undef / NilType. Now, instead, it will be inferred
as a Runtime['ruby', 'Symbol'] and this makes it more clear to
a user that they leaked an :undef in error.

As a consequence several tests that used :undef needed to be changed.