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`
rustpkg: Always write a package_id attribute into the link metadata

For some reason, I thought it wasn't necessary to write the package_id
attribute (which rustc's filesearch checks when searching for a package)
if the package ID had a single component (like "foo") as opposed to multiple
components (like "foo/bar/quux"). This meant that
`extern mod quux = "an-awesome-library";` didn't work, even if an-awesome-library
existed in the RUST_PATH.

Fixed it.
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
auto merge of #9179 : catamorphism/rust/rustpkg-package-id, r=catamorphism,metajack

r? @metajack - This solves the problem you were having earlier with things like ```extern mod geom = "rust-geom";``` (or something like that).
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.
auto merge of #9153 : alexcrichton/rust/simplify-format, r=huonw

This follows from the discussion in #9012.

* All macros are now defined in terms of `format_args!` allowing for removal of a good bit of code in the syntax extension
* The syntax extension is now in a more aptly-named file, `format.rs`
* Documentation was added for the `format!`-related macros.
debuginfo: Basic support for trait objects.
debuginfo: Implement DI for ty_opaque_box.
debuginfo: Support for recursive types.
debuginfo: Added test cases for recursive structs.
debuginfo: Added description of algorithm for handling recursive types.

Also fixed nasty bug caused by calling LLVMDIBuilderCreateStructType() with a null pointer where an empty array was expected (which would trigger an unintelligable assertion somewhere down the line).