multivariable kron_delta



I suggest extending kron_delta from a two argument to an n-argument function.
The change causes no errors with either the testsuite or the share testsuite. 

For one argument, kron_delta signals an error. Apparently, MMA defines 
kron_delta(x) = kron_delta(x,0). This, I think, will cause confusion.
Since kron_delta(x) signals an error, a user can assume 

 kron_delta(x0,...,xn) * kron_delta(y0,..., ym) = kron_delta(x0, ..., xn, y0, ..., ym)

is an identity without checking the number of arguments (if kron_delta(x) = kron_delta(x,0), 
it is *not* an identity).

The source code comment:

;; A n-ary Kronecker delta function: kron_delta(n0,n1, ..., nk) simplifies to 1 if
;; (meqp ni nj) is true for *all* pairs ni, nj in (n0,n1, ..., nk); it simplifies to 0 if
;; (mnqp ni nj) is true for *some* pair ni, nj in (n0,n1, ..., nk). Further kron_delta() --> 1
;; and kron_delta(xxx) --> wrong number of arguments error. Thus
;;
;;    kron_delta(x0,...,xn) * kron_delta(y0,..., ym) = kron_delta(x0, ..., xn, y0, ..., ym)
;;
;; is an identity.

Examples:

(%i4) kron_delta(1,1,1,1);
(%o4) 1

(%i5) kron_delta(1,1,%pi);
(%o5) 0

(%i6) kron_delta();
(%o6) 1

(%i7) kron_delta(2);
knon_delta: wrong number of arguments.
 -- an error. To debug this try: debugmode(true);

Comments? Also, the current user documentation is too complex and wrong.
The new code uses (effectively) is(equal(a,b)) to test for equality, it 
does not use sign (at least directly). 

--Barton