Range object improvements

Modify the IntRange and LongRange object to allow
decreasing ranges. This allow to write `range(5, 0)`.
_Effective Java_: when you override `equals()`, you should also override `hashcode()` and make sure that they have correct semantics.