compare frozensets as Basic objects

It was wrongly being assumed 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.
add unchanged function to pytest
move NS to pytest
check that all obj have __eq__ method
use the unchanged function in test suites

Some tests were modified to test what was more likely intended.

Some tests were marked with a skip to indicate that there is no
way to use the unchanged function to test that line because the
object doesn't support the func method.
add check for foo == foo tests in suite

If there is an inline comment at the end of such a test, the
test will not be flagged, e.g.

assert foo == foo  # quality: SKIP