syntax/ext: remove the ~str dependence of the deriving code.
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.
syntax/ext: migrate build.rs functions to AstBuilder methods.
syntax/ext: convert all AstBuilder methods to a uniform syntax.
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?