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
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.
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
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
auto merge of #13475 : Ryman/rust/result_unwrap_or_else, r=brson

It might make more sense to mirror `Option`'s `unwrap_or_else` but I've left it as `handle` as it feels more explicit about the signature difference.
Make Result::{unwrap, unwrap_err} require Show

`foo.ok().unwrap()` and `foo.err().unwrap()` are the fallbacks for types
that aren't `Show`.

Closes #13379
auto merge of #13479 : sfackler/rust/result-unwrap, r=cmr

`foo.ok().unwrap()` and `foo.err().unwrap()` are the fallbacks for types
that aren't `Show`.

Closes #13379
auto merge of #13481 : huonw/rust/devec-path, r=alexcrichton

Remove the use of ~[] from Path's internals.