Cleanup src/librustc/back
syntax::diagnostics: Color the ^~~~ in green for better visibility

Fixes #7164.
extra: Add a testcase for #7256.
Avoid unnecessary scratch datums for by-copy function arguments

Currently, by-copy function arguments are always stored into a scratch
datum, which serves two purposes.  First, it is required to be able to
have a temporary cleanup, in case that the call fails before the callee
actually takes ownership of the value. Second, if the argument is to be
passed by reference, the copy is required, so that the function doesn't
get a reference to the original value.

But in case that the datum does not need a drop glue call and it is
passed by value, there's no need to perform the extra copy.
librustc: Don't allow enum struct variants to shadow structs.
Add test for duplicate definitions of structs and enum struct variants.
More 0.7 release notes
Show defaults in rustdoc usage message
fix text of tutorials
Update AUTHORS.txt
Minor doc updates to reflect #[deriving(Zero)], and small release notes adjustments.

The `extra::fileinput` module landed just after 0.6 was released, and there are many
more derivable traits.
Usable instructions for generating docs from source
Avoid pointless allocas for "nil" return values

By using "void" instead of "{}" as the LLVM type for nil, we can avoid
the alloca/store/load sequence for the return value, resulting in less
and simpler IR code.

This reduces compile times by about 10%.
auto merge of #7259 : dotdash/rust/ir_improvement, r=graydon

The changes in these commits improve the IR codegen by removing unnecessary copies for certain function call arguments and stopping to allocate return values for functions returning nil. They reduce compile times by about 10% in total.
Added filtered method for Option type
auto merge of #7219 : sstewartgallus/rust/cleanup, r=graydon
Methodize TypeNames
Change calls for TypeName stuff to methods
Make log_fn_time a method
Start refacting LLVM Type handling