minor edits
unXFAIL ask(Q.real(NaN)) is None tests

Note: the old assumptions return None for queries about NaN whereas
the new assumptions (because NaN gets handled by _number) returns
False -- if it is important that this return None, the following can
be added to the pertinent handlers:

    NaN = staticmethod(lambda x, y: None)
sort assumptions dict when printing
more granular separation of re and im parts of Pow
modify old assumptions for Pow
modification of new assumptions
do not conclude if there is no precision
modify AskPositiveHandler.log

Also changed ~negative to nonnegative since ~negative does
not imply that the number is even real: it could be imaginary
or positive or zero. nonnegative implies that the number is
real and is not 0 or negative (and that's what the test in Add
is looking for).
code quality: check for duplicate test_ functions
fix AskPositiveHandler.Pow

There was a duplicate .even test; the second one should have
been odd. It was not caught the last time changes were made
to these lines, probably because the change was automated. I
found the need for a change because this was a line that was
uncovered with tests.

Other tests were also added to bring the coverage in `sets` almost
to 100% (the handling in _number is not complete but may represent
lines that will be unreachable/unlikely). In the `order` file there
is a significant amount of code for the hermitian property that
is not covered.
add inline note about use of (-1)**i
Merge pull request #2952 from smichr/reim

assumptions modifications for imaginary bases
fix Dummy.sort_key and use it in expr.sort_key

Also, catch any new Numbers that are generated by the rebuilding
of terms in Mul.flatten. Rather than check them at each step of
the way, just handle them once when done traversing the args.