Allow ref and mut modifiers for short form field patterns

Previously, if you wanted to bind a field mutably or by ref, you had to
do something like Foo { x: ref mut x }. You can now just do
Foo { ref mut x }.

Closes #6137
libextra: Another round of de-`Cell`-ing.

34 uses of `Cell` remain.
librustuv: RAII-ify `Local::borrow`, and remove some 12 Cells.
libstd: Remove some cells involved in
`deschedule_running_task_and_then`.
librustpkg: Make `io::ignore_io_error()` use RAII; remove a few more
cells.
libstd: Remove `Cell`s that were used because of `finally` by converting
their `finally` blocks to RAII.
compiletest: Remove uses of `Cell`.
librustdoc: Don't use `finally`, shaving off a `Cell`.
librustdoc: Remove a couple of `Cell`s.
libextra: Remove various cells involved in `Arc`s.

I could have done this by making `Arc` use RAII, but this is too
involved for now.
librustuv: Change `with_local_io` to use RAII.
libstd: Change `atomically` to use RAII.
libstd: Remove two uses of `Cell`.
Make crate hash stable and externally computable.

This replaces the link meta attributes with a pkgid attribute and uses a hash
of this as the crate hash. This makes the crate hash computable by things
other than the Rust compiler. It also switches the hash function ot SHA1 since
that is much more likely to be available in shell, Python, etc than SipHash.

Fixes #10188, #8523.
Add missing sundown dependency to rustdoc tests.
auto merge of #10593 : metajack/rust/pkgid-hash, r=brson

This replaces the link meta attributes with a pkgid attribute and uses a hash
of this as the crate hash. This makes the crate hash computable by things
other than the Rust compiler. It also switches the hash function ot SHA1 since
that is much more likely to be available in shell, Python, etc than SipHash.

Fixes #10188, #8523.
libstd: Remove `Cell` from the library.
auto merge of #10791 : pcwalton/rust/decelling, r=pcwalton

34 uses of `Cell` remain.

r? @alexcrichton
auto merge of #10833 : sfackler/rust/mut-pat, r=brson

Previously, if you wanted to bind a field mutably or by ref, you had to
do something like Foo { x: ref mut x }. You can now just do
Foo { ref mut x }.

Closes #6137
Support imports of the form `use {foo,bar}`

This fixes #10806.