native, rustuv: Fix spawning with empty args

There was a bug in both libnative and libuv which prevented child processes from
being spawned correctly on windows when one of the arguments was an empty
string. The libuv bug has since been fixed upstream, and the libnative bug was
fixed as part of this commit.

When updating libuv, this also includes a fix for #15149.

Closes #15149
Closes #16272
Fix many-crates-but-no-match test. (Issue #16348)
librustc: Use separate stack slot for each return.
Reenable ignored test and add run-pass test.
librustc: Add an intrinsic to retrieve the return pointer of a function.

This is needed for some GC stuff in Servo.
librustc: Don't allow return_address intrinsic in functions that don't use an out pointer.
librustc: Don't use Load/Store for structural values.
Change std::fmt::{Float,LowerExp,UpperExp} to not print '-NaN' for f32::NAN and f64::NAN
auto merge of #16284 : alexcrichton/rust/issue-16272, r=aturon

There was a bug in both libnative and libuv which prevented child processes from
being spawned correctly on windows when one of the arguments was an empty
string. The libuv bug has since been fixed upstream, and the libnative bug was
fixed as part of this commit.

When updating libuv, this also includes a fix for #15149.

Closes #15149
Closes #16272
Implement Index for RingBuf

This also deprecates RingBuf::get. Use indexing instead.
Implement Index for HashMap

This also deprecates HashMap::get. Use indexing instead.
Implement Index for TreeMap
Implement Index for SmallIntMap

This also deprecates SmallIntMap::get. Use indexing instead.
Implement Index for TrieMap
librustc: Don't use an alloca per return if the function doesn't have nested returns.
auto merge of #16195 : P1start/rust/more-index, r=aturon

Implement `Index` for `RingBuf`, `HashMap`, `TreeMap`, `SmallIntMap`, and `TrieMap`.

If there’s anything that I missed or should be removed, let me know.
auto merge of #16425 : nham/rust/fix_nan_format, r=alexcrichton

Currently, this:

    println!("{}", std::f64::NAN);

prints "-NaN". This commit is an attempt to change that to "NaN" instead.
auto merge of #16434 : vadimcn/rust/many-crates-but-no-match, r=alexcrichton
libsyntax: Don't strip types and lifetimes from single-segment paths in
patterns.

This breaks code like:

    fn main() {
        match Some("foo") {
            None::<int> => {}
            Some(_) => {}
        }
    }

Change this code to not contain a type error. For example:

    fn main() {
        match Some("foo") {
            None::<&str> => {}
            Some(_) => {}
        }
    }

Closes #16353.

[breaking-change]
auto merge of #16081 : luqmana/rust/nr, r=pcwalton

Fixes #15763