This is part of what makes this whole business tricky: I originally had a test that arg not be in `[I,-I]` since that leads to an imaginary result but the assumption system is able to resolve this without that code there:

```
>>> ask(Q.imaginary(log(I)))
True
>>> log(I).n()
1.5707963267949*I
```

The test should be (I think) `if arg.is_number and arg not in [I, -I]: return False`