compare frozensets as Basic objects (re-addresses #958)

There is instability of argument ordering when frozensets are involved, so Min(1,x)*Min(2,x) 
will have args sorted in an arbitrary order (which is something that we try to avoid).

It was wrongly being assumed (with #958) that if a frozenset was encountered that
it was equal to the other frozen set. This caused arbitrary sorting
of args like Min(1,x) and Min(2,x) since they are both the same function
with a single frozenset argument...but the (1,x) should be less than the
(2,x). So rather than returning 0, the args of the frozenset(s) are
compared.