Added support for struct-like enum variants in middle::ty::enum_variants().
Make the error messages that result from referencing
nonexistent traits consistent, and add a test.
Address @catamorphism's error message grammar nit.
Use #[allow(warnings)] in rusti instead of explicitly listing warnings
auto merge of #7572 : Dretch/rust/missing-trait-message-followup, r=pcwalton

This a followup to #7510. @catamorphism requested a test - so I have created one, but in doing so I noticed some inconsistency in the error messages resulting from referencing nonexistent traits, so I changed the messages to be more consistent.
auto merge of #7581 : alexcrichton/rust/better-rusti, r=pcwalton

This is more future-proof
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.
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
Fix broken tests