New private error message functions

These return the error code given, which then simplifies upcoming
callers.
Add krb5_[v]prepend_error_message2()

Also simplify krb5_vprepend_error_message() and make it replace the old
error when it doesn't match the new one.

MIT will be adding our krb5_[v]prepend_error_message() and the new
krb5_[v]prepend_error_message2().
Error reporting improvements in fcache.c
Set/preserve errno in rk_strerror_r()