support negative step

This enables range() to support a negative step value.