Allow Range to accept Infinites

> Why you want to do such thing?

It is not rename exactly but isn't that how we handle name clashes between different versions. For example in `core.compatibility` we have 
```
if PY3:
.
.
.
    xrange = range
```

Since every thing is python is derived from `object` I was thinking about doing `object.__bool__ = object.__nonzero__` but it turned out that we cannot assign attributes to `object`. Also even if it were possible it appears to be a bad idea to me now.

Anyway I looked at other usages of `__nonzero__` and did a similar thing here.