syntax/ext: remove the ~str dependence of the deriving code.
Remove unnecessary allocations flagged by lint from rustdoc
Remove unnecessary allocations flagged by lint from rustpkg
syntax/ext: Remove the trait-object indirection of the ext_ctxt object.
syntax/ext: modernise ext_ctxt to be CamelCase and use new.
syntax/ext: collect the ast building traits into a single trait.
Remove unnecessary allocations flagged by lint from fuzzer
syntax/ext: migrate build.rs functions to AstBuilder methods.
syntax/ext: convert all AstBuilder methods to a uniform syntax.
Take string slices
auto merge of #6611 : huonw/rust/syntax-ext-no-dup, r=jbclements

Fixes https://github.com/mozilla/rust/issues/6578 by merging the 3 different ways to build an AST into a single `AstBuilder` trait, creating a more uniform and briefer interface.

Also, converts the `ext_ctxt` trait-object to be a plain struct, as well as renaming it to `ExtCtxt`.

Seems to make expansion slightly faster for the normal case (e.g. `libcore` and `libstd`), but slower for `librustc` (slightly) and `libsyntax` (0.3s -> 0.8s! I'm investigating this, but I'd prefer this patch to land relatively quickly.).

`git blame` suggests maybe @graydon or @erickt are familiar with this area of the code. r?
Use static strings
auto merge of #6657 : sanxiyn/rust/allocation, r=thestinger
auto merge of #6658 : sanxiyn/rust/static-string-2, r=thestinger
testsuite: Test for #4780
testsuite: Update test for #2478. Still xfailed
testsuite: Add xfailed test cases
rustc: Don't generate code for unreachable expressions

The way we deal with unreachable expressions in trans is pretty ad hoc,
but this at least doesn't make it worse, and eliminates the LLVM
assertion failure reported in #5741.
auto merge of #6662 : catamorphism/rust/issue-4780, r=catamorphism
auto merge of #6664 : catamorphism/rust/issue-3796, r=catamorphism