Learn to destroy a ccache we're copying

Add a flag to krb5_ccache_copy() which will instruct it to destroy a
source ccache after reading its contents.  Using this when we copy the
creds from a MEMORY cache to somewhere else is necessary to avoid having
a subsequent call to krb5_cc_cache_match() select the MEMORY cache when
we're trying to have it search a different location by default.
Try to use the default_ccache_name'd as the target

Try to use the location named by the default_ccache_name setting as the
target cache.  If it's a collection, just create or update a subsidiary
cache.  If it's not, then fall back to creating a new cache to try to
avoid destroying the contents of one that might already be there.  We
can't really detect this in advance for KEYRING: caches, though.
Be more careful of target ccache collections

When copying credentials to a cache collection, take care to avoid
generating multiple caches for a single client principal, but don't
change the primary out from anyone who might already be using the
target collection.
Pass a missing argument to fprintf()
Mark krb5_store_some/all_creds as static

Both krb5_store_some_creds and krb5_store_all_creds are only defined and
called from one source file, so mark them as static functions.
Remove "other" creds arrays, which are always NULL
Make show_credential static, too
Remove unused compare_creds() function
Remove a redundant copy of an argument pointer
Remove no-longer-used krb5_ccache_overwrite()
Removed no-longer-used krb5_find_princ_in_cache()
Fix minor memory leak
Copy config entries to the target ccache

When we try to screen out expired creds while reading them from one
ccache to eventually store in another, also keep configuration entries.
Update comments, fix a couple of typos