repr: print functions as `fn()`
repr: add support for trait objects

Closes #8916
repr: handle tuple structs sanely

Closes #8919
switch __field__ hack to <unnamed_field>

avoids conflict with fields actually named `__field__`
auto merge of #8927 : thestinger/rust/repr, r=huonw
libsyntax: Remove obsolete fixme.
librustc: Check for empty crate link meta name and vers.
auto merge of #8933 : luqmana/rust/ot, r=pnkfelix

Fixes #6540. Also remove a fixme for #2619 since it's not relevant anymore.
Long awaited test case for #2355.
Allow _ param name in trait default method for #8468.
Regression test for #8468.
auto merge of #8936 : pnkfelix/rust/fsk-issue-2355-testcase, r=alexcrichton

Fix #2355.
Fix the std::fmt doc-block to show up in pandoc
auto merge of #8941 : alexcrichton/rust/fix-comment, r=thestinger
Incorporate review feedback.  Fix #8468.
auto merge of #8940 : pnkfelix/rust/fsk-8468-allow-underscore-paramname-in-trait-default-method, r=alexcrichton

Fix #8468.  (Though the right answer in the end, as noted on the dialogue on the ticket, might be to just require trait methods to name their parameters, regardless of whether they have a default method implementation or not.)
Modernized a few more types in syntax::ast
auto merge of #8939 : Kimundi/rust/master, r=huonw
Implement support for indicating the stability of items.

There are 6 new compiler recognised attributes: deprecated, experimental,
unstable, stable, frozen, locked (these levels are taken directly from
Node's "stability index"[1]). These indicate the stability of the
item to which they are attached; e.g. `#[deprecated] fn foo() { .. }`
says that `foo` is deprecated.

This comes with 3 lints for the first 3 levels (with matching names) that
will detect the use of items marked with them (the `unstable` lint
includes items with no stability attribute). The attributes can be given
a short text note that will be displayed by the lint. An example:

    #[warn(unstable)]; // `allow` by default

    #[deprecated="use `bar`"]
    fn foo() { }

    #[stable]
    fn bar() { }

    fn baz() { }

    fn main() {
        foo(); // "warning: use of deprecated item: use `bar`"

        bar(); // all fine

        baz(); // "warning: use of unmarked item"
    }

The lints currently only check the "edges" of the AST: i.e. functions,
methods[2], structs and enum variants. Any stability attributes on modules,
enums, traits and impls are not checked.

[1]: http://nodejs.org/api/documentation.html
[2]: the method check is currently incorrect and doesn't work.