(PUP-3201) Stop using :undef for parameters in 4x

The :undef symbol was still leaking all over the place internally. This
caused type inference to sometimes end up with Runtime[ruby, Symbol]. By
using nil instead of :undef, everything can be much more straightforward.
Once the code removal for puppet 4 comes into play even more oddities
around how resource parameters are handled can be performed.