Fix spans for attributes

They used to be one token too long, so you'd see things like
```
rust/rust/test.rs:1:1: 2:2 warning: unused attribute,
rust/rust/test.rs:1 #![foo]
rust/rust/test.rs:2 #![bar]
```
instead of
```
test.rs:1:1: 1:8 warning: unused attribute, #[warn(unused_attribute)] on
by default
test.rs:1 #![foo]
          ^~~~~~~
```
auto merge of #15589 : Denommus/rust/master, r=alexcrichton

I have noticed some errors and some absences that I considered essential to the usability of rustc in zsh, so I included them and updated some of the man page.
Only run ldconfig on Linux
auto merge of #15597 : brson/rust/ldconfig, r=pcwalton

If ldconfig fails it emits a warning. This is very possible when installing
to a non-system directory, so the warning tries to indicate that it may
not be a problem.
std: Move MemoryMap fields to methods

If modified, you can safely unmap arbitrary memory. These fields are not
intended to be modified, so read-only accessors are the only ones that are
provided.

Closes #15478
libc: Switch open to use a mode_t on unix

While I'm at it, export O_SYNC with the other flags that are exported.

Closes #15582
auto merge of #15588 : alexcrichton/rust/issue-15478, r=cmr

If modified, you can safely unmap arbitrary memory. These fields are not
intended to be modified, so read-only accessors are the only ones that are
provided.

Closes #15478
auto merge of #15592 : arjantop/rust/bufwriter-write-fix, r=alexcrichton

First condition is not needed and just prevents 0 length writes

Fixes #15583
auto merge of #15601 : jbclements/rust/disable-default-macro-behavior, r=alexcrichton

Our AST definition can include macro invocations, which can expand into all kinds of things. Macro invocations are expanded away during expansion time, and the rest of the compiler doesn't have to deal with them. However, we have no way of enforcing this.

This patch adds two protective mechanisms.

First, it adds a (quick) explicit check that ensures there are no macro invocations remaining in the AST after expansion. Second, it updates the visit and fold mechanisms so that by default, they will not traverse macro invocations. It's easy enough to add this, if desired (it's documented in the source, and examples appear, e.g. in the IdentFinder.

Along the way, I also consulted with @sfackler to refactor the macro export mechanism so that it stores macro text spans in a side table, rather than leaving them in the AST.
auto merge of #15602 : adrientetar/rust/name-fix, r=huonw

Not sure how I did miss that in the first place...

r? @alexcrichton
auto merge of #15605 : blake2-ppc/rust/rustdoc-const-t, r=alexcrichton

Update the formatting of raw immutable pointers to print *const T.
auto merge of #15607 : lucidd/rust/master, r=pnkfelix

I used the same description rustc --help outputs.
auto merge of #15610 : brson/rust/0.12.0, r=alexcrichton
auto merge of #15613 : cmr/rust/rustdoc-arg-patterns, r=alexcrichton
Convert a first batch of diagnostics to have error codes
auto merge of #15617 : aturon/rust/std-more-experimental, r=alexcrichton

The `hash` module was not included in an earlier pass that sets baseline
stability of modules within `std` to `experimental`.
Fix Documentation Typo in libstd
auto merge of #15614 : lucidd/rust/#15474, r=alexcrichton

This fixes #15474
auto merge of #15621 : sfackler/rust/attr-span, r=cmr

They used to be one token too long, so you'd see things like
```
rust/rust/test.rs:1:1: 2:2 warning: unused attribute,
rust/rust/test.rs:1 #![foo]
rust/rust/test.rs:2 #![bar]
```
instead of
```
test.rs:1:1: 1:8 warning: unused attribute, #[warn(unused_attribute)] on
by default
test.rs:1 #![foo]
          ^~~~~~~
```
Use a nicer Show impl for Name