(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
> If you want something more than None you have to make it more complex.

I want something more correct first.  None is much better than some wrong answer.

> Please submit simplifications if they don't make a test fail.

Sorry, if it looks for you not too constructive, but it's clear - more complex handler is much more error-prone (and difficult to review).