Added overview of the debuginfo module at the beginning of debuginfo.rs.
Fixed compiler warnings about unnecessary string allocations in debuginfo.rs
Reordered debuginfo.rs and commented public fns
debuginfo.rs: Removed some static constants not used anymore.
debuginfo.rs: Explained why a function is called although one could think it should not be.
debuginfo.rs: Removed trailing whitespace.
extra: Add a testcase for #7256.
Make task_rng() return @mut R instead of @@mut R
librustc: Don't allow enum struct variants to shadow structs.
Add test for duplicate definitions of structs and enum struct variants.
Added filtered method for Option type
Remove `ast::pure_fn` and all concept of `pure` from the compiler
replaced some 'std::' with 'extra::' in comments
iterator: add a size_hint default method

also adds an implementation for the vector iterators
iterator: add a FromIterator trait

This is able to take advantage of the lower bound from the size hint.
Cleaned up middle a bit.

The only really tricky change is that a long chain of ifs, and elses
was turned into a single if, and a match in astencode.rs. Some methods
can only be called in certain cases, and so have to come after the if.
vec: remove BaseIter implementation

I removed the `static-method-test.rs` test because it was heavily based
on `BaseIter` and there are plenty of other more complex uses of static
methods anyway.
auto merge of #7274 : thestinger/rust/size_hint, r=huonw

I ran into a weird lifetime bug blocking updating the `collect` method to use `FromIterator`, but everything here works fine.
std::hashmap: Implement external iterator for HashMap and HashSet
std::hashmap: Add test_iterate for HashSet