Don't attempt duplicate outputs

This ends up causing weird errors like those seen in #11346

Closes #11346
Register new snapshots
Fix formatting of some code blocks in pdf docs

Code blocks apparently need to be surrounded by whitespace to be output
correctly when generating pdfs
Add lint for unnecessary casts
Remove some unnecessary type casts

Conflicts:
	src/librustc/middle/lint.rs
Support arbitrary stdout/stderr/logger handles

This will allow capturing of common things like logging messages, stdout prints
(using stdio println), and failure messages (printed to stderr).  Any new prints
added to libstd should be funneled through these task handles to allow capture
as well.

Additionally, this commit redirects logging back through a `Logger` trait so the
log level can be usefully consumed by an arbitrary logger.

This commit also introduces methods to set the task-local stdout handles:

* std::io::stdio::set_stdout
* std::io::stdio::set_stderr
* std::io::logging::set_logger

These methods all return the previous logger just in case it needs to be used
for inspection.

I plan on using this infrastructure for extra::test soon, but we don't quite
have the primitives that I'd like to use for it, so it doesn't migrate
extra::test at this time.

Closes #6369
Don't read forever on a file descriptor

Similarly to the recent commit to do this for networking, there's no reason that
a read on a file descriptor should continue reading until the entire buffer is
full. This makes sense when dealing with literal files, but when dealing with
things like stdin this doesn't make sense.
mk: Fix formatting of docs.mk
Added in Clone/TotalEq/TotalOrd/ToStr traits to all parts of btree.
Equals is now compact and uses vec's equals method.  Cmp compares
all elements on branches and leaves (Nodes).
doc: Update style of index, organization and trim out some excess.
Add Pointer tutorial, rename borrowed pointer tutorial.
doc: Fix tests in pointer guide
Fix parallel makefile builds

All the copying of files amongst one another was apparently causing something to
get corrupted. Instead of having files fly around, just update the directories
to link to.
auto merge of #11355 : alexcrichton/rust/read-waits-forever, r=brson

All the fun is down below.
auto merge of #11329 : fhahn/rust/unused-cast-lint2, r=alexcrichton

Updates as mentioned in #11135
auto merge of #11347 : alexcrichton/rust/issue-11346, r=brson

This ends up causing weird errors like those seen in #11346

Closes #11346
std::trie: add an mutable-values iterator.
std::trie: remove some obsolete internal iterators.
std::trie: use macros to share code between the iterator implementations.
std::trie: Add some iteration/search benchmarks.