fix range_step{,_inclusive} with negative step
iter: fix `range_inclusive` when `start > stop`
iter: fix `RangeInclusive`'s `DoubleEndedIterator`
Use std::iter::range_step

Use the iterator version instead of the old uint::/int::range_step
functions.
std::num: Remove `range_step` for each numeric type

Replaced by `std::iter::range_step`
remove old internal iterator range tests

The cases they test are well covered in the `std::iter` tests.
rm some uses of the `advance` iterator method
iter: add the edge case tests for `range` too
auto merge of #9203 : thestinger/rust/range_step, r=huonw