rewrite the tutorial section on boxes
librustc: Enforce privacy for static methods.

This starts moving a bunch of privacy checks into the privacy
checking phase and out of resolve.
auto merge of #5428 : thestinger/rust/tutorial, r=catamorphism

My goal is to explain the underlying concepts first (destructors and then ownership) with plenty of step-by-step examples, so that thoroughly explaining the semantics of mutability, boxes, moves, etc. is a breeze. I'm trying to avoid the comparisons with C++ that were done before, because this should be approachable for people coming from any language. C++ programmers already know these concepts so they aren't the audience that needs to be catered to. Comparisons with other languages can be done in separate documents (like [this one](https://github.com/mozilla/rust/wiki/Rust-for-CXX-programmers)).

This still needs examples for ownership (inherited mutability), owned boxes and managed boxes.
Update run-pass/cfg-on-items.rs

Make comment describe actual behaviour.
libsyntax: Accept `static` instead of `const` for globals
libsyntax: Accept the new `[T, ..N]` style for vec.
syntax: move ext/deriving.rs to ext/deriving/mod.rs
auto merge of #5436 : alexcrichton/rust/assert-message, r=pcwalton

This would close #2761. I figured that if you're supplying your own custom message, you probably don't mind the stringification of the condition to not be in the message.
syntax: split deriving module into submodules for each trait
Fix pretty printing for cfg test.
compiletest: Make pretty tests actually use compile-flags.
Mark cfg test xfail-fast since check-fast doesn't understand compile-flags.
auto merge of #5350 : yichoi/rust/pull-0313-2, r=graydon,pcwalton

FIX #5330

rename arm-unknown-android to arm-linux-androideabi
libsyntax: Forbid `use` (and most other things) within `extern { ... }` blocks
auto merge of #5410 : luqmana/rust/cfg-and, r=graydon

This adopts the syntax from #2119. No more annoying workarounds involving wrapping in mods!
core: rename vec::rev_each{,i} to vec::each{,i}_reverse

I'm making this change because the _reverse suffix is more commonly
used in libcore/libstd.
libcore: Make a couple of constructors public. rs=testfixing
syntax: Removing some bad copies
test: Fix test. rs=test
auto merge of #5442 : pcwalton/rust/extern-block-restriction, r=pcwalton

r? @graydon