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
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.
std::hashmap: Implement external iterator for HashMap and HashSet
std::hashmap: Add test_iterate for HashSet
std::hashmap: Use .iter() instead of .each and similar
std::hashmap: Remove BaseIter impl for HashSet

Remove the BaseIter impl, while keeping the .each method until callers
are converted.
std::to_str: Use .iter() for HashMap and HashSet
hashmap: add FIXME number