GSS context cache fixes.

Fix various refcounting problems, such as never decrementing
any refcnt.  Also introduce a global upper bound on the GSS
context cache, which defaults to 1024 elements.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Discard expired GSS contexts in gc_idle.

If an expired GSS context is encountered, discard it.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Cycle initial GSS ctx partitions.

Cycle the -initial- partition for idle scans, so none
is unfairly victimized.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Add release method to service auth ops.

The caller uses SVCAUTH_RELEASE(auth, req) to release any
auth handle, after which it may make no further use of
the handle.

For AUTH_NONE and AUTH_SYS, this operation is a no-op.  For
RPCSEC_GSS, the call is necessary for auth handle reclamation.

Signed-off-by: Matt Benjamin <matt@linuxbox.com>
Restore conditional mutex unlock in svcauth_gss_return().

Signed-off-by: Matt Benjamin <matt@linuxbox.com>