Fix-up PP Code to reflect new lifetime param syntax
Remove remaining address space related code
Fix merge fallout
auto merge of #7182 : Aatch/rust/trans-refactor-pt2, r=graydon

This is another big refactoring of `trans` though this is unlikely to have much of an
impact on code size or speed.

The major change here is the implementation of a `Type` struct which is the new
home for all your LLVM `TypeRef` needs. It's a simple wrapper struct, with static
methods for constructing types, then regular methods for
manipulating/interrogating them. The purpose of this is mostly to make the code
surrounding them somewhat more ideomatic. A line like: `T_ptr(T_ptr(T_i8()))` is 
now `Type::i8().ptr_to().ptr_to()`,which is much more like regular Rust code.

There are a variety of smaller changes here and there:

* Remove address spaces. At least it doesn't generate them, I haven't spent much
  time looking for related code.
* Use a macro for declaring the LLVM intrinsics, makes it look much nicer.
* Make the type for a string slice actually create a named `str_slice` type in LLVM,
  this makes reading the appropriate code much easier.
* Change the way struct and enum type names are generated. This just means
  that a struct like `struct Foo { a: int }` now produces the IR 
  `%struct.Foo = type { i64 }`, which is much easier to read. Similarly, other structs
  are a bit tighter to make it easier to read.

--- --- ---

This PR did get away from me a little, as I occasionally got distracted or as I fixed
up problems with unrelated code that were stopping me from continuing. One major
thing is that this PR contains the work from #7168, since that would have conflicted
with this and it was broken anyway. Sorry for bundling it like this.

Fixes #3670 and #7063

--- --- ---

EDIT: This no longer removes the llvm insn stats.
rustc: Fix formatting of --help
Fix take glue of owned trait objects

This finishes the incomplete conversion of unique traits as two-word
allocations started in 211d038abc05c77785f72a31840016517cf218c2.

Fixes #5882, #6717, #7153, #7208.
replaced some 'std::' with 'extra::' in comments
Expand the deriving(ToStr) implementation
Fix compiling empty fmt! strings
Merge pull request #7230 from Blei/green-squiggle

syntax::diagnostics: Color the ^~~~ in green for better visibility
Merge pull request #7270 from thestinger/doc

accumulated doc pull requests from the queue
Merge pull request #7227 from alexcrichton/issue-7218

Fix compiling empty fmt! strings
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.
auto merge of #7214 : Blei/rust/fix-owned-traits, r=pcwalton

This finishes the incomplete conversion of unique traits as two-word
allocations started in 211d038abc05c77785f72a31840016517cf218c2.

Fixes #5882, #6717, #7153, #7208.
auto merge of #7204 : alexcrichton/rust/deriving-to-string, r=pcwalton

Closes #7180 and #7179.

Before, the `deriving(ToStr)` attribute was essentially `fmt!("%?")`. This changes it to recursively invoke `to_str()` on fields instead of relying on `fmt!`-style things. This seems more natural to me and what should actually be expected.
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