collections: deprecate BTree.

This is very half-baked at the moment and very inefficient, e.g.
inappropriate use of by-value `self` (and thus being forced into an
overuse of `clone`). People get the wrong impression about Rust when
using it, e.g. that Rust cannot express what other languages can because
the implementation is inefficient.
Add new keywords (particularly `where` & `virtual`) to editor modes.
Fix an error in a code sample in bitv.rs
auto merge of #16543 : huonw/rust/deprecated-btree, r=alexcrichton

This is very half-baked at the moment and very inefficient, e.g.
inappropriate use of by-value `self` (and thus being forced into an
overuse of `clone`). People get the wrong impression about Rust when
using it, e.g. that Rust cannot express what other languages can because
the implementation is inefficient: https://news.ycombinator.com/item?id=8187831 .
auto merge of #16547 : huonw/rust/new-kw, r=pcwalton
Make BigUint and BigInt Hash, fixes #16551
auto merge of #16550 : kaseyc/rust/fix_documentation_error, r=alexcrichton
auto merge of #16558 : Gankro/rust/hashbig, r=pcwalton

Pretty self-explanatory. Only annoying thing is that it *seems* that I had to add `#![feature(default_type_params)]` to libnum because of Hasher. Don't know if there's a way around that.

Fix #16551
Fix type checking of struct fields in patterns of type ty_err

Fixes #16338.
Fixed #16401.
auto merge of #16554 : jakub-/rust/struct-pat-fields-ty-err, r=pcwalton

Fixes #16338.
Fixed #16401.