Add stability inheritance

This commit makes several changes to the stability index infrastructure:

* Stability levels are now inherited lexically, i.e., each item's
  stability level becomes the default for any nested items.

* The computed stability level for an item is stored as part of the
  metadata. When using an item from an external crate, this data is
  looked up and cached.

* The stability lint works from the computed stability level, rather
  than manual stability attribute annotations. However, the lint still
  checks only a limited set of item uses (e.g., it does not check every
  component of a path on import). This will be addressed in a later PR,
  as part of issue #8962.

* The stability lint only applies to items originating from external
  crates, since the stability index is intended as a promise to
  downstream crates.

* The "experimental" lint is now _allow_ by default. This is because
  almost all existing crates have been marked "experimental", pending
  library stabilization. With inheritance in place, this would generate
  a massive explosion of warnings for every Rust program.

  The lint should be changed back to deny-by-default after library
  stabilization is complete.

* The "deprecated" lint still warns by default.

The net result: we can begin tracking stability index for the standard
libraries as we stabilize, without impacting most clients.

Closes #13540.
Update the external links in the doc index

Splits 'extern resources' into 'external documentation and 'community',
adds rustforrubyists.com and rustbyexample.com, stackoverflow.com.
doc: Add disclaimers about versions of external docs
sync: Enable the fast path of select()

This was erroneously disabled as part of 065e121f and it hasn't been turned on
since. This was a 3x perf improvement in a test of mine.
doc: Fix margins around tables of contents

There is no space between the TOC and the succeeding para.
std: Update std::task docs to reflect modern times

This corrects some misinformation.
auto merge of #15041 : brson/rust/docindex, r=alexcrichton

Splits 'extern resources' into 'external documentation and 'community',
adds rustforrubyists.com, rustbyexample.com, stackoverflow.com.
std::sync::TaskPool: Improve module documentation

The struct and module doc comments are reformulated. The `execute`
method's documentation are put up to date, and failure information
is added. A test is also added to address the possible failure.
Implement Eq for Bitv and BitvSet
auto merge of #14993 : alxgnon/rust/taskpooldocfix, r=alexcrichton

TaskPool is the only item in the std::sync doc that doesn't have a summary. This fixes that problem.
auto merge of #15044 : alexcrichton/rust/speed-up-select, r=kballard

This was erroneously disabled as part of 065e121f and it hasn't been turned on
since. This was a 3x perf improvement in a test of mine.
auto merge of #15047 : brson/rust/taskdocs, r=huonw

This corrects some misinformation.
auto merge of #15048 : brson/rust/toc-margin, r=alexcrichton

There is no space between the TOC and the succeeding para.

See http://doc.rust-lang.org/guide-pointers.html for example.
auto merge of #15050 : kaseyc/rust/impl_eq_for_bitv_bitvset, r=alexcrichton
Check pattern refutability the same way exhaustiveness is checked
Provide a witness pattern for non-exhaustive patterns

Fixed #4321
Add support for fixed size vectors in let/arg patterns

Fixes #7784
Add unreachability detection for missized patterns of fixed size vectors

Fixed #13482
Fix #14393

String patterns should have a single constructor of arity 0.
Address review comments