(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
It's a difference between how number theorists define prime and how algebraists define prime. A number theorist only cares about nonnegative integers, as there's nothing interesting that can be said about negative integers that can't be trivially reformulated as a fact about nonnegative integers. 

An algebraist cares about all integers, because they form a ring. He also cares about generalizations to things. To an algebraist, -3 is prime because it satisfies the [algebraic definition](https://en.wikipedia.org/wiki/Prime_element) which works even in unordered rings (and x + 1 is a prime polynomial in the ring Z[x]). 

But our definition should probably match the number theoretic one, as it really only means prime number.