Allow Range to accept Infinites

Above `n` is defined as ` ceiling((stop - start)/step)`. Having `stop` or `start` as `oo` or `-oo` sometimes lead to the `oo -oo` case leading to `NaN`. When either `start` or `stop` is `oo` or `-oo` then `ceiling((stop - start)/step)` is same as `(stop - start)/step` hence `start + (n - 1)*step` reduces to `stop - step`.