librustc: Fix `expr_use_visitor` (and, transitively, the borrow check)
with overloaded calls.

This enforces the mutability and borrow restrictions around overloaded
calls.

Closes #14774.

[breaking-change]
travis: Move from travis_wait to time-passes

It's looking like we're still timing out all over the place with travis_wait
because the entire `make -j4 rustc-stage1` command is taking too long. Instead,
achieve roughly the same idea by just having `-Z time-passes` printing
information. We shouldn't have a pass that takes longer than 10 minutes in
isolation.
auto merge of #15313 : pcwalton/rust/overloaded-call-expr-use, r=alexcrichton

with overloaded calls.

This enforces the mutability and borrow restrictions around overloaded
calls.

[breaking-change]

Closes #12223.

r? @alexcrichton
auto merge of #15323 : alexcrichton/rust/no-travis-wait, r=huonw

It's looking like we're still timing out all over the place with travis_wait
because the entire `make -j4 rustc-stage1` command is taking too long. Instead,
achieve roughly the same idea by just having `-Z time-passes` printing
information. We shouldn't have a pass that takes longer than 10 minutes in
isolation.
add width() method in Char ; update Unicode tables

- Updated `src/etc/unicode.py` to generate a table for determining
  character width.

- Miscellaneous updates in `src/etc/unicode.py` to correspond to hand-
  written updates to `src/libcollections/unicode.rs`.

- Generated updated versions of `src/libcore/unicode.rs` and
  `src/libcollections/unicode.rs` based on the latest Unicode data.

- Added new `width` method and corresponding implementation in the
  `Char` trait.

- Added basic test for `.width()` in libcoretest.

closes #15224
remove free fn, update doc comment

char::width() free function removed, only method remains.

Updated doc comment to indicate unit of measure.
correct/optimize width table ; support CJK locale

- When extracting W, F, and A widths, we must ignore the categories
  explicitly designated as spacing. Thus, rewrote the
  load_east_asian_width function to support excluding certain
  categories.

- When possible, collapse adjacent spans in width table to improve the
  speed of the binary search.

- CJK support: .width() takes a boolean argument is_cjk which makes
  Ambiguous width characters return 2 instead of 1 when true.
fix width testcase for Ambiguous char
move Unicode-intensive functions out of core

created new lib, libbasic_unicode

This implements two new traits, UnicodeChar and UnicodeStrSlice.
These two traits take the functions requiring Unicode tables out
of libcore and instead implement them here.

In addition, this consolidates the unicode modules from libcore
and libcollections in one place.

libstd still exports std::char, but now it comes from
libbasic_unicode, which re-exports the functions that
remained in core::char plus the functions implemented
in basic_unicode::unicode_char.

libcollections still forms the basis for std::str, but now Words
comes from basic_unicode (since it requires the UnicodeChar trait).

All testing for basic_unicode happens in libcoretest.
basic documentation ; added missing exports

needed `pub use` for UnicodeStrSlice in libcollections/str.rs

neede `pub use` for UnicodeChar in libbasic_unicode/lib.rs

added brief doc comments