Introduce credential store extensions

Add new APIs gss_acquire_cred_from, gss_add_cred_from, and
gss_store_cred_into, which take additional argments to specify the
location of the credential storage using a key-value map, where keys
are interpreted by the mechanisms.

ticket: 7217 (new)
Implement credential store support for krb5 mech
Implement credential store support in spnego
Add basic test for credstore extentions
Remove outdated file migration.doc
Fix references, typo and formating
Make sure that long lines are displayed in Sphinx

Before this fix the very long lines (110+ symbols) under the
preformatted text <pre> tag would be cut short in Sphinx HTML output.
Add internal path expansion functions

Add an adapted version of Heimdal's expand_path.c, defining
k5_expand_path_tokens() and k5_expand_path_tokens_extra().  These
functions allow template paths like %{TEMP}/krb5cc_%{uid} to be
resolved.  Also add a test program to exercise the path expansion
code.
Add token expansion for keytab names

Make the default_keytab_name and default_client_keytab_name variables
subject to parameter expansion.

ticket: 7219 (new)
Rearrange ccdefname.c slightly

Eliminate the USE_CCAPI variant of get_from_os() which was only used
in KfM.  Make get_from_os() allocate its result (wrapping the Windows
implementation so it can continue to use a fixed-size buffer).
Simplify krb5_cc_set_default_name() and krb5_cc_default_name().  Make
some minor style adjustments.
Rename tests/t_cccol.py to t_ccache.py

Generalize the ccache collection tests in t_cccol.py to multiple kinds
of ccache tests, and rename it to avoid confusion with the lower-level
lib/krb5/ccache/t_cccol.py.  Move a test from t_general.py into
t_ccache.py.
Add default_ccache_name profile variable

Like default_keytab_name and default_client_keytab_name,
default_ccache_name is subject to parameter expansion.

ticket: 7220 (new)
Support changing the built-in ccache/keytab names

* Add DEFCCNAME, DEFKTNAME, and DEFCKTNAME configure variables to
  change the built-in ccache and keytab names.
* Add krb5-config options to display the built-in ccache and keytab
  names.
* In the default build, use krb5-config to discover the system's
  built-in ccache and keytab names and use them (if not overridden).
  This can be controlled with the --with-krb5-config=PATH or
  --without-krb5-config configure options.
* Make the built-in ccache name subject to parameter expansion.

ticket: 7221 (new)
Minor fixes to expand_path.c

Corrections to stuff noticed by kaduk:
* Eliminate a space before paren in a call to free().
* Use %lu for unsigned long in format strings.
* Simplify the tokens table definition.
Remove obsolete code in ldap_pwd_policy.c

r18750 refactored some policy fetching code into populate_policy(),
and left the old code in #if 0 blocks.  Get rid of those blocks now.
Factor out LDAP policy marshalling

Use a helper function add_policy_mods() in
krb5_ldap_create_password_policy() and krb5_ldap_put_password_policy()
to avoid duplicating code for each field.
Remove eDirectory support code in LDAP KDB module
De-indent process_k5beta6_record()
Fix ugly ladder in src/kadmin/cli/kadmin.c
Policy extensions + new policy: allowed ks types

This simply adds KADM5_API_VERSION_4 and various fields to the
policy structures:

 - attributes         (policy-ish principal attributes)
 - max_life           (max ticket life)
 - max_renewable_life (max ticket renewable life)
 - allowed_keysalts   (allowed key/salt types)
 - TL data            (future policy extensions)

Of these only allowed_keysalts is currently implemented.

Some refactoring of TL data handling is also done.

ticket: 7223 (new)