Typecast Poly to PurePoly in RoofOf._new, fixes #7876
5083: make bases somewhat canonical wrt sign

There are different levels of sign extraction:

1) coefficient sign
2) extractable sign via could_extract_minus_sign
3) "           "    via signsimp

Some sort of sign simplification must be done by Pow or
else other routines cannot do theirs. e.g. if (1-x)**3 is
written as (-(x - 1))**3 by extracting a sign on the interior,
if Pow doesn't do anything then a non-Pow routine has to do the
work. This PR implements handling of the leading coeffient's sign.
7895: watch out for new atan2 in solve

When accepting real and imaginary parts of an equation, discriminate
against additional atan2 terms, too. I'm not sure that recording what
was already present is necessary, but it seems like a good idea to
not reject a splitting into real and imag as long as no *new* re, im,
arg or atan2 are introduced.

The test for issue 6121 was changed to a simple assertion since the
original issue involved an infinite recursion. The new result is
a little different than the old result but there is no error.
Merge pull request #7897 from smichr/5083

5083: make bases somewhat canonical wrt sign
Merge pull request #7900 from smichr/7895

7895: watch for new atan2 upon splitting equation into real and imag parts
Merge pull request #7879 from skirpichev/7876-fix

Typecast Poly to PurePoly in RoofOf._new