auto merge of #17738 : hoeppnertill/rust/master, r=alexcrichton

There is an issue with lev_distance, where
```
fn main() {
    println!("{}", "\x80".lev_distance("\x80"))
}
```
prints `2`.

This is due to using the byte length instead of the char length.
auto merge of #17761 : bkoropoff/rust/issue-17758, r=alexcrichton

This fixes an ICE and closes issue #17758
Rename vector patterns to array patterns

Closes #17765.
auto merge of #17766 : pminten/rust/atomic-int-in-examples, r=alexcrichton

The examples for fetch_or, fetch_and and fetch_xor for
std::sync::atomic::AtomicInt used AtomicUint instead of AtomicInt.
Tweak ‘discriminant value already exists’ error message

Closes #15524.
Give a more descriptive error when marking non-test items as #[test]

Closes #14772.
auto merge of #17772 : bkoropoff/rust/issue-17767, r=alexcrichton

Closes issue #17767
Add intrinsics::unreachable
Add tests for intrinsics::unreachable
auto merge of #17774 : lambda/rust/docs-mention-hoedown, r=steveklabnik

Rust 0.11.0 switched from sundown to the actively maintained hoedown; update the rustdoc documention to mention this.
auto merge of #17776 : luqmana/rust/ul, r=alexcrichton

Update our LLVM snapshot to master (as of ~ Wed Oct 1 18:49:58 2014 +0000). 

Since my patches have landed upstream this fixes #13429 and #7298.
auto merge of #16970 : kmcallister/rust/llvm-unreachable, r=thestinger

I'm not sure how to add an automated test for this.
Track kind of closure in upvar categorization

Keep track of the kind of closure responsible for an upvar
Categorize upvars in `Fn` unboxed closures as freely aliasable

This causes borrowck to correctly reject mutation or mutable borrows
of upvars in `Fn` unboxed closures since the closure environment is
aliasable.

This also tracks the responsible closure in the aliasability
information returned and uses it to give a helpful diagnostic.

Closes issue #17780
Fix unit test that was illegally mutating an upvar
Add regression test for issue #17780
auto merge of #17777 : lambda/rust/fix-docs-short-hash, r=alexcrichton

The escaped newline in the middle of the variable reference breaks the
short hash substitution, leaving the link text exmpty; rewrap so that
each replacement is on its own line.
auto merge of #17785 : P1start/rust/diagnostics, r=alexcrichton

Closes #17765.
Closes #15524.
Closes #14772.
Fix target-feature codegen option syntax in rustc man page.

The man page stated that the list of features was space-separated when
it's actually comma-separated.
String::truncate doc: also fails if not a char boundary