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
Reduce the amount of complexity in format!

This renames the syntax-extension file to format from ifmt, and it also reduces
the amount of complexity inside by defining all other macros in terms of
format_args!
Document all of the format! related macros
Fix expand_stmt as well as expand_expr to use the correct span

The same fix as before is still relevant, I just forgot to update the
expand_stmt macro expansion site. The tests for format!() suffice as tests for
this change.