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
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
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
Merge remote-tracking branch 'origin/master' into ios