Add new error message wrapping APIs

This commit adds krb5_[v]prepend_error_message[2]() public functions for
wrapping error messages.  They are public so that, for example, plugins
can use them.
Use new error message wrapping APIs
Add [libdefaults] err_fmt parameter
Include file ccache name in error messages

Also changed the interpretation of errnos as follows:

 - EPERM and EACCESS obviously should map to KRB5_FCC_PERM, not
   KRB5_FCC_NOFILE.

 - ENAMETOOLONG is clearly not an internal error, since the name must
   have come from an external source (the calling app, the environment),
   and most closely corresponds to KRB5_FCC_NOFILE (since it could not
   be opened, it can't exist[*]).

   [*] Well, if could be opened by chdir()ing into successive path
       component directories (not thread-safe), or by using openat()
       (less portable).  But it's best to not do this; the file just
       does not exist.

 - EROFS clearly corresponsds best to KRB5_FCC_PERM -- permission to
   write was denied, after all.

 - EISDIR, ENOTDIR, and ELOOP also best map to KRB5_FCC_NOFILE: the file
   couldn't exist as a regular file, therefore it's as if it didn't
   exist.

 - EBUSY should map to KRB5_CC_IO.

 - EEXIST should really be handled in open_cache_file() when O_CREAT |
   O_EXCL are set.

 - ETXTBSY just doesn't belong.  But since it had been there, I figured
   I'd map it to KRB5_CC_IO as that seems best.
Test err_fmt