add range_step/range_step_inclusive

My focus was on getting these to be correct in all cases by handling overflow properly. I'll clean them up and work on the performance later.