Re-do the 30 minute intro

This was originally on my blog, so it's incredibly informal. Let's make
it better.
Changed `extern crate foo as bar;` error message

Closes #17709
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
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.
adding iterator benches to tree-based maps for comparison purposes
flesh out BTree docs
syntax: Parse outer attributes in quote_method!

Fixes #17782.
doc: Update output of `rustc --version`
doc fixups
Properly handle cfgs in rustdoc

Rustdoc would previously improperly handle key="value" style cfgs, which
are notably used for Cargo features.
Clarify that assigning/comparing different tuple types to one another won't compile
Re-exports core::str::Utf16CodeUnits in std::str

Closes #17751
Fix the most egregious instances of "local ambiguity: multiple parsing options..." error in macros, which often occurs when trying to match parts of Rust syntax.
For example, this matcher: `fn $name:ident( $($param:ident : $pty:ty),* )` would fail when parsing `fn foo()`, because macro parser wouldn't realize that an ident cannot start with `)`.

This resolves #5902, and at least partially mitigates #9364 and #3232.
Guide: Fix inconsistency in 'Marcos' section

The old version switched in between examples from the value `5i` to `"Hello"`
and back. Additionally, the code generated by `rustc print.rs
--pretty=expanded` is not as verbose anymore.
auto merge of #17832 : brson/rust/updateversion, r=alexcrichton
auto merge of #16641 : steveklabnik/rust/intro_redux, r=alexcrichton

Because my '30 minute intro' was originally a blog post, the tone was a bit too light. It also was written a long time ago, and deserves a bit of a refresher for modern Rust. now that my work on the Guide is wrapping up, I want to give it a quick re-write as well.

This is not yet done, but I'm submitting it for feedback so far. I'd really like some comments on the ownership part in particular, which gets lower level than before, but is not strictly 100% accurate. Trying to strike a balance.

In general, I'm not sure I go into enough detail for those without systems experience, but am afraid of too much detail for those that do.

Rendered view: https://github.com/steveklabnik/rust/blob/intro_redux/src/doc/intro.md

/cc @wycats @nikomatsakis @brson etc
Rename RELEASES.txt to RELEASES.md. It's markdown.