Added support for struct-like enum variants in middle::ty::enum_variants().
rustc: improve -Z trans-stats to report per-fn LLVM instruction counts and translation timing
Removed drop from the keyword list in the docs
libsyntax: fix infinite loop when recursively including modules

Fixes #7276
Move `extra::net_*` to `extra::net::*` properly.

Where * = tcp, ip, url.

Formerly, extra::net::* were aliases of extra::net_*, but were the
recommended path to use. Thus, the documentation talked of the `net_*`
modules while everything else was written expecting `net::*`.

This moves the actual modules so that `extra::net::*` is the actual
location of the modules.

This will naturally break any code which used `extra::net_*` directly.
They should be altered to use `extra::net::*` (which has been the
documented way of doing things for some time).

This ensures that there is one, and only one, obvious way of doing
things.
Remove superfluous super::super::
vec: Add .pop_opt() -> Option<T>

Add a function to safely retrieve the last element of a ~[T], as
Option<T>. Implement pop() using pop_opt(); it benches the same as the
old implementation when tested with optimization level 2.
vec: Add .shift_opt() -> Option<T>

Add a function to safely retrieve the first element of a ~[T], as
Option<T>. Implement shift() using shift_opt().

Add tests for both .shift() and .shift_opt()
remove extra::rope

It's broken/unmaintained and needs to be rewritten to avoid managed
pointers and needless copies. A full rewrite is necessary and the API
will need to be redone so it's not worth keeping this around.

Closes #2236, #2744
auto merge of #7557 : michaelwoerister/rust/enum_structs, r=pcwalton

After getting an ICE trying to use the `Repr` enum from middle::trans::adt (see issue #7527), I tried to implement the missing case for struct-like enum variants in `middle::ty::enum_variants()`. It seems to work now (and passes make check) but there are still some uncertainties that bother me:
+ I'm not sure I did everything, right. Especially getting the variant constructor function from the variant node id is just copied from the tuple-variant case. Someone with more experience in the code base should be able to see rather quickly whether this OK so.
+ It is kind of strange that I could not reproduce the ICE with a smaller test case. The unimplemented code path never seems to be hit in most cases, even when using the exact same `Repr` enum, just with `ty::t` replaced by an opaque pointer. Also, within the `adt` module, `Repr` and matching on it is used multiple times, again without running into problems. Can anyone explain why this is the case? That would be much appreciated. 

Apart from that, I hope this PR is useful.
auto merge of #7582 : mitsuhiko/rust/doc-fixes, r=huonw

Drop is no longer a keyword, removed it from the intro docs.
auto merge of #7585 : Blei/rust/fix-circular-modules, r=huonw

Fixes #7276
Stop allocating view_items with @
De-managed ast::Path
De-manage Lifetime
De-share trait_ref

Also, makes the pretty-printer use & instead of @ as much as possible,
which will help with later changes, though in the interim has produced
some... interesting constructs.
De-manage OptVec<TyParamBounds>
De-share ast::Ty
Clean up warnings
Fix rustdoc and rusti