(PUP-3201) Treat :undef as PNilType

For PUP-2857 :undef was changed from being a PNilType to a PRuntimeType. This
stopped the undef literal in the language from being able to be assigned to
Optional parameters. However, this only happened when the undef was the
default expression for the parameter.