Check for comparisons to NaN in patterns

For every pattern that refers to a static value, evaluate it and emit a warning
if it is a NaN.

Fixes #6804
Generalize NaN pattern detection using walk_pat
rm unused upcall_exchange_free
rm default method lint

default methods are enabled by default, so there's not much point in
keeping around a lint to report them as being experimental
improve container/iterator tutorial
rewrite rust-mode to use font-lock-mode and emacs builtin syntax analysis
syntax: Fix #6416 by aborting on errors after test parse.
Added some more atomic operations.
NaN patterns: indicate that is_NaN is a method
auto merge of #8029 : emillon/rust/issue-6804, r=cmr

Hi,

As noted in #6804, a pattern that contains `NaN` will never match because `NaN != NaN`. This adds a warning for such a case. The first commit handles the basic case and the second one generalizes it to more complex patterns using `walk_pat`.
auto merge of #8030 : thestinger/rust/iterator, r=huonw
Allow linking against crates with #[no_std]

Previously having optional lang_items caused an assertion failure at
compile-time, and then once that was fixed there was a segfault at runtime of
using a NULL crate-map (crates with no_std)
auto merge of #7924 : alexcrichton/rust/opt-lang-xcrate2, r=thestinger

This is a reopening of #7874
auto merge of #8031 : graydon/rust/emacs-mode-rewrite, r=catamorphism

The previous mode did a lot of very manual char-at-a-time parsing and was quite fragile and difficult to maintain. I talked to Marijn and he suggested I'd have better luck just rewriting it from scratch. This is the result of that effort; it seems to be faster, a bit easier on the eyes and more-or-less as well behaved when indenting. The algorithm is a bit different I suspect (it was hard to tell the previous one) but I tried to keep it simple and pleasant-looking.
auto merge of #8037 : graydon/rust/issue-6416, r=cmr

Errors only turn into failures in the parser when you force them.
auto merge of #8039 : Xazax-hun/rust/master, r=brson

Added some more atomic operations. https://github.com/mozilla/rust/issues/7421
Improve the camel case warning a bit.
Eliminate unused variable warnings.
Register snapshots.