(PUP-3365) Change 3x deep map of undef to only do surface map

This changes the mapping of arguments to 3x function calls to not
map undef to empty strings except at the surface level. Other mappings
are still done as they are required for frozen strings, and values
having a type that is not supported by the 3x functions.
Merge pull request #3142 from hlindberg/PUP-3365_remove-deep-undef-mapping-in-3x-func-api

(PUP-3365) Change 3x deep map of undef to only do surface map