Improve Add/Pow imaginary assumption handlers

fixes #4149
fixes #2920
fixes #7886

@smichr
I see you are handling only all positive and all negative. That's conservative and at least not wrong. Handling numbers separately as I have done in abcfa25 of my is_number branch (PR #7514 might be a better way to go; or at least some hybrid of yours and mine).