Add @Spell clusters to Vim syntax file

Add @Spell clusters to Vim syntax highlighting file to do spell checking
only inside comments and strings
doc: Boxes diagram shows enum value inside box.
doc: add note below diagram about memory layout.
Fixed bug when initialising bitv from bool=true
doc: fix version stamp for TeX files

This fixes a regression introduced in
3d57b240ab1fd038b3a41fe2042dc9a0544ea53e.
Elaborate manual on matching (dereference patterns, lvalue/rvalue matching)

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
doc: fix rust.md fallout
rustc: Feature gate `log_syntax!`. Closes #11602
doc: fix dangling links in rust.md

Fixes #11559 (not that the manual couldn't use a review).
auto merge of #11619 : adridu59/rust/patch-md, r=cmr

Noticeably necroes #10892.
Also closes #11559.

r? @alexcrichton
Forbid unnecessary visibility on view items

For `use` statements, this means disallowing qualifiers when in functions and
disallowing `priv` outside of functions.

For `extern mod` statements, this means disallowing everything everywhere. It
may have been envisioned for `pub extern mod foo` to be a thing, but it
currently doesn't do anything (resolve doesn't pick it up), so better to err on
the side of forwards-compatibility and forbid it entirely for now.

Closes #9957
rustc: Clean up error reporting

This commit re-works how the monitor() function works and how it both receives
and transmits errors. There are a few cases in which the compiler can abort:

1. A normal compiler error. In this case, the compiler raises a FatalError as
   the failure value of the task. If this happens, then the monitor task does
   nothing. It ignores all stderr output of the child task and it also
   suppresses the failure message of the main task itself. This means that on a
   normal compiler error just the error message itself is printed.

2. A normal internal compiler error. These are invoked from sess.span_bug() and
   friends. In these cases, they follow the same path (raising a FatalError),
   but they will also print an ICE message which has a URL to go report a bug.

3. An actual compiler bug. This happens whenever anything calls fail!() instead
   of going through the session itself. In this case, we print out stuff about
   RUST_LOG=2 and we by default capture all stderr and print via warn!() so it's
   only printed out with the RUST_LOG var set.
Disallow implementation of cross-crate priv traits

Turns out we were just forgetting to encode the privacy for trais, and
everything without privacy defaults to public!

Closes #11593
Add a test for closed issue #9259

This must have been fixed in some recent trans refactor/rewrite, hurray!

Closes #9259
auto merge of #11606 : alexcrichton/rust/issue-9259, r=brson

This must have been fixed in some recent trans refactor/rewrite, hurray!

Closes #9259
auto merge of #11607 : alexcrichton/rust/issue-9957, r=cmr

For `use` statements, this means disallowing qualifiers when in functions and
disallowing `priv` outside of functions.

For `extern mod` statements, this means disallowing everything everywhere. It
may have been envisioned for `pub extern mod foo` to be a thing, but it
currently doesn't do anything (resolve doesn't pick it up), so better to err on
the side of forwards-compatibility and forbid it entirely for now.

Closes #9957
auto merge of #11620 : alexcrichton/rust/rustc-silent, r=brson

This commit re-works how the monitor() function works and how it both receives
and transmits errors. There are a few cases in which the compiler can abort:

1. A normal compiler error. In this case, the compiler raises a FatalError as
   the failure value of the task. If this happens, then the monitor task does
   nothing. It ignores all stderr output of the child task and it also
   suppresses the failure message of the main task itself. This means that on a
   normal compiler error just the error message itself is printed.

2. A normal internal compiler error. These are invoked from sess.span_bug() and
   friends. In these cases, they follow the same path (raising a FatalError),
   but they will also print an ICE message which has a URL to go report a bug.

3. An actual compiler bug. This happens whenever anything calls fail!() instead
   of going through the session itself. In this case, we print out stuff about
   RUST_LOG=2 and we by default capture all stderr and print via warn!() so it's
   only printed out with the RUST_LOG var set.
auto merge of #11632 : brson/rust/issue-11602, r=huonw
syntax: convert ast_map to use a SmallIntMap.

NodeIds are sequential integers starting at zero, so we can achieve some
memory savings by just storing the items all in a line in a vector.

The occupancy for typical crates seems to be 75-80%, so we're already
more efficient than a HashMap (maximum occupancy 75%), not even counting
the extra book-keeping that HashMap does.
auto merge of #11311 : hdima/rust/vim-syntax-spell-check, r=cmr

Add `@Spell` clusters to Vim syntax highlighting file to do spell checking only inside comments and strings