Implement Char::encode_utf16

And clean up encode_utf8 a bit.
Add tests for Char::encode_utf{8,16}
Decode non-BMP hex escapes in JSON

Fixes #13064.
Document traits in std::num (#7511)
librustc: Improve error message for missing feature attributes.
libstd: Add unwrap_or and unwrap_or_handle to Result
Update tutorials to use new attribute syntax (#13476)
std: migrate path::unix to using Vec internally.
std: migrate path::windows to using StrBuf internally.

Same representation change performed with path::unix.

This also implements BytesContainer for StrBuf & adds an (unsafe) method
for viewing & mutating the raw byte vector of a StrBuf.
std: update & de-~[] path's tests.
Check bounds when looking up type parameters

A mismatched type with more type parameters than the expected one causes
`typeck` looking up out of the bound of type parameter vector, which
leads to ICE.

Closes #13466
libsyntax: update helper to stringify TyU* and TyI* to take into account having a value.

Fixes #13359.
auto merge of #13469 : kmcallister/rust/utf16, r=huonw

This fixes two separate issues related to character encoding.

* Add `encode_utf16` to the `Char` trait, analogous to `encode_utf8`.  `&str` already supports UTF-16 encoding but only with a heap allocation.  Also fix `encode_utf8` docs and add tests.

* Correctly decode non-BMP hex escapes in JSON (#13064).
auto merge of #13471 : Ryman/rust/feature_syntax_error, r=brson

The current error message is misleading, it asks users to add `#[feature(..)]` which ends up being treated as an outer attribute, which then has no error unless `attribute_usage` lint is enforced. The code will still fail and the user might not understand why.
auto merge of #13452 : Ryman/rust/fix_uint_as_u, r=alexcrichton

Fixes #13359.
rustdoc: Fix rendering closures and trait bounds

Closures did not have their bounds printed at all, nor their lifetimes. Trait
bounds were also printed in angle brackets rather than after a colon with a '+'
inbetween them.

Note that on the current task::spawn [1] documentation page, there is no mention
of a `Send` bound even though it is crucially important!

[1] - http://static.rust-lang.org/doc/master/std/task/fn.task.html
rustc: Don't link in syntax extensions

This bug was introduced in #13384 by accident, and this commit continues the
work of #13384 by finishing support for loading a syntax extension crate without
registering it with the local cstore.

Closes #13495
auto merge of #13470 : Manishearth/rust/docnum, r=brson

See #7511
auto merge of #13464 : alexcrichton/rust/fix-rustdoc-rendering, r=brson

Closures did not have their bounds printed at all, nor their lifetimes. Trait
bounds were also printed in angle brackets rather than after a colon with a '+'
inbetween them.

Note that on the current task::spawn [1] documentation page, there is no mention
of a `Send` bound even though it is crucially important!

[1] - http://static.rust-lang.org/doc/master/std/task/fn.task.html
rustdoc: Use smaller sequential numbers instead of `NodeId`s for parents.

`allPaths` is now a flat array in effect. This decreases the size of
the search index by about 4--5% (gzipped or not).