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
mk: Don't emit landing pads in stage 0.

Reduces time to build stage0 from 11:30 to 9:40 on my machine.
librustc: Don't use the same alloca for match binding which we reassign to in arm body.
librustc: Also use new alloca if matching on an arg or upvar which we reassign in the arm body.
librustc: Encode upvar_borrow_map in metadata.
removing 'str'='struct' search synonym

fixes #16384
rustdoc: use raw search in URL

fixes #16385
fixes #16271
Fix misspelled comments for tests.
Fix typo
auto merge of #16373 : brson/rust/nopads, r=pcwalton

Reduces time to build stage0 from 11:30 to 9:40 on my machine.

There's a tradeoff here since doing this will make the stage1 compile-fail tests fail.

r? @pcwalton
auto merge of #16387 : Gankro/rust/doc-search, r=cmr

Fixes str/struct ambiguity (by removing the synonym) and pushes raw searches to the history instead of processed ones. 

# [Live Version Here](http://cg.scs.carleton.ca/~abeinges/doc/std/)
Fix typo `convering` to `converting`
auto merge of #16395 : superlogical/rust/patch-1, r=alexcrichton
remove outdated comment

These are already coded as traits.
lint: dead_code ignores items with leading underscores.

This generalises the behaviour with struct fields (which recieve no
dead_code warning if they have a leading _), and other similar lints, to
all items, e.g. `fn _foo() {} fn main() {}` has no warnings.
auto merge of #16185 : luqmana/rust/match-drop, r=pcwalton

Fixes #15571.
Fixes #16151.

r? @pcwalton
auto merge of #16400 : chuckries/rust/patch-1, r=huonw

These are already coded as traits.
Note naming convention of lists (xs, ys, ...)

People reading the tutorial may not be familiar with the convention of naming lists, vectors and the like as xs, ys, etc. Without some explanation of the reasoning behind it, it might come off as just throwaway non-descriptive names. Languages like Haskell gets flak from using short, non-descriptive names, while in reality, there are clear conventions and reasons for using certain terse variable names.

I assumed that the convention came from a language like Haskell, so I
tailored the explanation according to that.
auto merge of #16182 : jbcrail/rust/fix-test-comments, r=sfackler
auto merge of #15410 : LemmingAvalanche/rust/patch-1, r=alexcrichton

People reading the tutorial may not be familiar with the convention of naming lists, vectors and the like as xs, ys, etc. Without some explanation of the reasoning behind it, it might come off as just throwaway non-descriptive names. Languages like Haskell gets flak from using short, non-descriptive names, while in reality, there are clear conventions and reasons for using certain terse variable names. 

This is just a proposed explanation of this convention, as I've interpreted it - I assumed that the convention came from a language like Haskell, so I tailored it according to that. So beware that I might have misjudged how it is used in the Rust language, or at least how it is used in the Rust tutorial.