liburl: rename and move from_str to Url::parse_str.

url::from_str => url::Url::parse_str

The FromStr trait still works, but its confusing to have a from_str
free function that retuns a Result, while the regular from_str
returns an Option, hence the rename.

[breaking-change]
liburl: rename and move path_from_str to Path::parse_str.

url::path_from_str => url::Path::parse_str

The FromStr trait still works, but its confusing to have a path_from_str
free function that retuns a Result, while the regular from_str style
functions return an Option, hence the rename to indicate a Result.

[breaking-change]
liburl: remove redundant fields in Url.

url.path - Now a Path instead of a String.

To fix old code:
url.path => url.path.path
url.query => url.path.query
url.fragment => url.path.fragment

Not much point having the Path struct if it's not going to be used.

[breaking-change]
liburl: Simplify encoding/decoding using iterators.
liburl: Remove some unnecessary allocations.

Some signatures have changed from String to &str returns.

To fix, call to_string() on the returned value.

[breaking-change]
liburl: cosmetic test changes.
liburl: Generic input for {en,de}code.
Removed unnecessary method in test
Parser: fix PatIdent span bug

Fix small bug introduced in e38cb972dcf: PatIdent span was incorrect
because self.last_span was being used before the ident token was
parsed.
vim: set Rust tab conventions
rustc: Reorder error and note message to reduce confusion.

Moved note after error to reduce confusion when the pair appears in the
middle of other errors. Closes #13279.
Remove entry_bcx from FunctionContext

We no longer need to refer to the entry block from arbitrary places, so
we can drop it from FunctionContext.
move lifetime suggestion note to after the error

Closes #15433.
librustc: Make sure to run destructors in the right order when matching on moved value.
Refactored VecPerParamSpace to hide exposure of `Vec` representation.

This basically meant changing the interface so that no borrowed `&Vec`
is exposed, by hiding `fn get_vec` and `fn get_mut_vec` and revising
`fn all_vecs`.

Instead, clients should use one of the other methods; `get_slice`,
`pop`, `truncate`, `replace`, `push_all`, or `is_empty_in`, which
should work for any case currently used in rustc.
Revise `VecPerParamSpace` to use a one Vec rather than three.

In my informal measurements, this brings the peak memory usage when
building librustc from 1662M down to 1502M.  Since 1662 - 1502 = 160,
this may not recover the entirety of the observed memory regression
(250M) from PR #14604.  (However, according to my local measurements,
the regression when building librustc was more like 209M, so perhaps
this will still recover the lions share of the lost memory.)
auto merge of #15418 : pnkfelix/rust/fsk-revise-VecPerParamSpace, r=pcwalton

In my informal measurements, this brings the peak memory usage when
building librustc from 1662M down to 1502M.  Since 1662 - 1502 = 160,
this may not recover the entirety of the observed memory regression
(250M) from PR #14604.  (However, according to my local measurements,
the regression when building librustc was more like 209M, so perhaps
this will still recover the lions share of the lost memory.)
auto merge of #15442 : luqmana/rust/odp, r=pnkfelix

Inadvertently changed the order in which destructors ran in certain cases with #15076.

Fixes #15438.
auto merge of #15427 : aochagavia/rust/parse, r=pcwalton
auto merge of #15428 : phildawes/rust/master, r=huonw

Fix small bug introduced in e38cb972dcf: PatIdent span was incorrect
because self.last_span was being used before the ident token was
parsed.