Include import name in import shadowing error messages.

This partially alleviates the confusing behavior in issue #16597
Update compile-fail tests due to changed diagnostics
Add compile-fail test for missing import shadowing case
Fix TwoWaySearcher to work when used with periodic needles.

There is a check in TwoWaySearcher::new to determine whether the needle
is periodic. This is needed because during searching when a match fails,
we cannot advance the position by the entire length of the needle when
it is periodic, but can only advance by the length of the period.

The reason "bananas".contains("nana") (and similar searches) were
returning false was because the periodicity check was wrong.

Closes #16589
libstd: Refactor Duration.

This changes the internal representation of `Duration` from

    days: i32,
    secs: i32,
    nanos: u32

to

    secs: i64,
    nanos: i32

This resolves #16466. Some methods now take `i64` instead of `i32` due
to the increased range. Some methods, like `num_milliseconds`, now
return an `Option<i64>` instead of `i64`, because the range of
`Duration` is now larger than e.g. 2^63 milliseconds.
libstd: Limit Duration range to i64 milliseconds.

This enables `num_milliseconds` to return an `i64` again instead of
`Option<i64>`, because it is guaranteed not to overflow.

The Duration range is now rougly 300e6 years (positive and negative),
whereas it was 300e9 years previously. To put these numbers in
perspective, 300e9 years is about 21 times the age of the universe
(according to Wolfram|Alpha). 300e6 years is about 1/15 of the age of
the earth (according to Wolfram|Alpha).
bitv: make benchmarks always return a value

This makes sure that the benchmarked code does not get optimized away.
Also fixed a typo.

Fixes #12118.
arena: fix a typo
bitv: make sure benchmarks run long enough

Previously they were too short (less than 10 ns), so the benchmarker
could not resolve them meaningfully. Now they should run in the order of
100 ns.
librustc: Mark unboxed closure calls and definitions with appropriate llvm return/argument attributes.
Fix LLVM version in configure

Upstream LLVM from VCS already has version 3.6,
configure fixed appropriately to allow building with it
syntax: Fix complexity of string parsing. Closes #16624.
syntax: Test parsing of long binary strings
Use only 400000 characters to test slow string parsing.
make priorityqueue's from_iter use heapify
win64: Add missing #[repr(C)]

Signed-off-by: Peter Atashian <retep998@gmail.com>
auto merge of #16656 : luqmana/rust/ucmla, r=pcwalton

Gets rid of a FIXME in `base::get_fn_llvm_attributes`.

r? @pcwalton
configure: Recognize i686 build on msys2
auto merge of #16651 : vks/rust/fix-bitv-bench, r=alexcrichton

Fixes #12118.

(I sneaked in an unrelated one-character whitespace fix I spotted while reviewing some benchmarks, if that is not okay, I can create a separate pull request for that.)
librustc: Properly tag upvars in proc's to stop misleading unused_mut warnings.