(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
But should we restrict yourself only to complex/reals?  For example, we can have zero matrix or something.