auto merge of #12656 : Armavica/rust/terminfo, r=sfackler

According to `/etc/terminfo/README`,
```
This directory is for system-local terminfo descriptions. By default,
ncurses will search ${HOME}/.terminfo first, then /etc/terminfo (this
directory), then /lib/terminfo, and last not least /usr/share/terminfo.
```
Expand string literals and exprs inside of macros

A couple of syntax extensions manually expanded expressions, but it
wasn't done universally, most noticably inside of asm!().

There's also a bit of random cleanup.
test: Ignore some phase(syntax) tests

These tests are failing on the snap builders, and are now tagged with a FIXME.

cc #12102
auto merge of #12658 : sfackler/rust/asm-expand, r=alexcrichton

A couple of syntax extensions manually expanded expressions, but it
wasn't done universally, most noticably inside of asm!().

There's also a bit of random cleanup.
Make visible types public in rustc
auto merge of #12659 : alexcrichton/rust/fix-snap, r=sfackler

These tests are failing on the snap builders, and are now tagged with a FIXME.

cc #12102
auto merge of #12662 : sfackler/rust/unexported-type, r=cmr
Emacs: Remove README warning of old whitespace bug

The incompatibility of rust-mode with global-whitespace-mode warned
about in the README was actually fixed by commit 581b3db3b3.  Remove the
warning from the README and close #3994.
auto merge of #12663 : MicahChalmer/rust/emacs-remove-ws-bug-warning, r=brson

The incompatibility of rust-mode with global-whitespace-mode warned
about in the README was actually fixed by commit 581b3db3b3.  Remove the
warning from the README and close #3994.
libsyntax: fixed converting Spans to stuff.

Before this change span_to_* methods on CodeMap assumed that Span includes both of its endpoints (by trying to lookup span.hi in CodeMap).
This sometimes led to incorrect error reporting and ICEs, as byte position lookup would overflow into the next available FileMap.

    Example:
        ````

        pub fn main() {
            let mut num = 3;
            let refe = &mut num;
            *refe = 5;
            println!("{}", num);
        }````

(note the empty line in the beginning and the absence of newline at the end)

The above would have caused ICE when trying to report where "refe" borrow ends.
The above without an empty line in the beginning would have reported borrow end to be the first line.

Most probably, this is also responsible for (at least some occurrences of) issue #8256.