arg throws away common parts of re and im parts

With these changes, something like arg(3*(a+I*b)) now simplifies to arg(a+I*b).
The changes have been made. I decided against using cancel in preference of simple cancellation -- this is only being used when the result is not a number so it's not necessary to have complete cancellation. But simple cancellation give a better result in some cases as discussed at #7638 regarding "round-trip".