Eliminate memory leak in parse_name()

In an uncommon out-of-memory condition, parse_name() could leak even
more memory by failing to free a buffer before returning ENOMEM.
parse_name is not krb5_parse_name

An error return from parse_name() does not _necessarily_ mean that it is
krb5_parse_name which failed -- the error could be an out-of-memory
condition, or (with CMUCS implied /root support) an error identifying
the requesting user.
fakepam: Support more pam data items

This extends fakepam's pam_set_item() and pam_get_item() to provide full
support for PAM_RHOST, PAM_RUSER, and PAM_TTY, and read-only support for
PAM_SERVICE (which returns the service name given to pam_start()) and
PAM_USER_PROMPT (which always returns the default string "login: ").

This allows fakepam to be used to test modules which get and/or set
these items, including pam-krb5 when built with CMUCS implied $USER/root
support.