Improve Add/Pow imaginary assumption handlers

fixes #4149
fixes #2920
fixes #7886

@smichr
I suspect you meant to delete this line (r = ...) and make the last line of the routine `return ask(Q.rational(expr.exp), assumptions)`. I'll change that.