rustc: middle: lint: use more doc comments
rustc: middle: ty: use doc comments for the tcx
rustc: add a lint for large enum variants

It can be easy to accidentally bloat the size of an enum by making one variant
larger than the others. When this happens, it usually goes unnoticed. This
commit adds a lint that can warn when the largest variant in an enum is more
than 3 times larger than the second-largest variant. This requires a little
bit of rejiggering, because size information is only available in trans, but
lint levels are only available in the lint context.

It is allow by default because it's pretty noisy, and isn't really *that*
undesirable.

Closes #10362
rustc: abstract lint level exporting from EnumSizeVariance
Fix to tutorial
Minor fixes to `std::str` docs

This tweaks the `std::str` docs to compensate for the recent shift from `~str`
to `String`.
Update tutorial, see issue #13578
Allow $foo:block nonterminals in expression position

Fixes #13678.
auto merge of #14432 : kballard/rust/nt_block, r=huonw

Fixes #13678.
mark non-immediate by-value parameters as non-null
auto merge of #14300 : cmr/rust/enum-size-lint, r=kballard

See commits for details.
handle attributes for non-immediate types first

Slices are non-immediate and were not having these attributes applied.
auto merge of #14439 : thestinger/rust/nonnull, r=luqmana
syntax: Add a source field to `Local` for tracking if it comes from `let`s or `for`s.
auto merge of #14374 : swgillespie/rust/swgillespie-tutorial, r=alexcrichton

The current tutorial says that the only way to get master is to build from source, which isn't true anymore - nightly binaries and an installer for Mac OS X are now available at the install page: http://www.rust-lang.org/install.html . Feedback very much welcome! Addresses issue #13578.
Improve docs for core::tuple
auto merge of #14440 : Sawyer47/rust/tuple-doc, r=alexcrichton
syntax: desugar a `for` loop to a let binding to get better error
messages when the pattern is refutable.

This means the compiler points directly to the pattern and said that the
problem is the pattern being refutable (rather than just saying that
some value isn't covered in the `match` as it did previously).

Fixes #14390.
rustc: provide more precise information about refutable patterns.

The compiler now points exactly which part(s) of a pattern are
refutable, rather than just highlighting the whole pattern.
auto merge of #14429 : sanrodari/rust/patch-1, r=sfackler