(continued from #8403) changing assumptions

## Motivation
It is currently possible to create a meaningless set of assumptions (fixes #8075):

neither
```
    Dummy(zero=True, finite=False) nor
    Dummy(zero=True, infinite=True)
```
raise an error.

### results

```
>>> Dummy(integer=1).is_finite
True <--formerly None
>>> oo.is_rational
False <--formerly None
```

## major changes
- nonzero, finite and infinite are all complex
- nan has all attributes except `is_number` and `commutative` as False
- integers are now finite (hence oo.is_odd and other such integer properties are False)
- 16 of 17 issues in #8043 are addressed
- 2 XFAILed tests are now working
- about 7 tests with wrong results were corrected
- fixes #8081
- fixes #8088 

## todo

- [ ] fix Add._eval_is_imaginary so XFAILed test passes
I would *strongly* avoid thinking of number assumptions as applying to matrices. You can call a matrix "zero" or "positive" but a lot of facts about numbers don't hold for corresponding matrices. For example, you can have `A*B = 0` for nonzero matrices `A` and `B`. Take `Matrix([[1, 0], [0, 0]])*Matrix([[0, 0], [0, 1]])`. But this integral domain fact is fundamental to numbers (this is how solve works for instance).