Refactor the logging system for fewer allocations

This lifts various restrictions on the runtime, for example the character limit
when logging a message. Right now the old debug!-style macros still involve
allocating (because they use fmt! syntax), but the new debug2! macros don't
involve allocating at all (unless the formatter for a type requires allocation.
Fix visibility of digest implementations
Some struct visibility fixes
std::rt: Implement task yielding. Fix a starvation problem
extra::ringbuf: Implement method `.swap(uint, uint)` just like vector

RingBuf::swap(&mut self, i, j) swaps the element at indices `i` and `j`
if both elements are in bounds, otherwise it fails.
Regression test for ICE.  Fix #5153.
Enclose code in documentation in backticks
base64: backticks for code in documentation
bigint: backticks for code in documentation
bitv: backticks for code in documentation
syntax: Fix wrong span on ObsoleteEmptyImpl
syntax: Fix wrong span on ObsoleteMode
syntax: Fix wrong span on trait fn visibility

Fixes #9348.
auto merge of #9503 : dcrewi/rust/fix-digest-visibility, r=alexcrichton

I really have no idea why the tests didn't fail. Maybe it's another cross-crate issue?
auto merge of #9506 : sfackler/rust/visibility, r=alexcrichton
auto merge of #9507 : brson/rust/sched, r=alexcrichton

This also includes a fix for yielding from single-threaded schedulers where the scheduler would stop working before its work queue was empty. Fixes the deadlocks that this patch had previously.
rustdoc: Fix broken struct field search links

Takes the same approach as variants, writes a redirect index page back to the
struct with an anchor to the field in question.

Closes #9524
rustdoc: Generate documentation for foreign items

This slurps up everything inside of an 'extern' block into the enclosing module
in order to document them. The documentation must be on the items themselves,
and they'll show up next to everything else on the module index pages.

Closes #5953
auto merge of #9515 : pnkfelix/rust/fsk-test-for-issue-5153, r=alexcrichton

r? anyone
rustdoc: Strip implementations of private traits

Closes #5416