librustc: Remove def_ids from types.
librustc: Optimize metadata::decoder::item_name.
libstd: Micro-optimize vuint_at
rt: Fix scalability problem with big stacks on 32 bit
librustc: Improve inlining behavior.
llvm: Fixes for RustWrapper.
test: Rewrite nbody and spectralnorm shootout benchmarks
test: Add fannkuch-redux and fasta-redux shootout benchmarks
test: Add k-nucleotide
Move shootout-k-nucleotide to bench
test: Implement pidigits and reverse-complement
librustc: WIP patch for using the return value.
rt: Remove dump_stacks
test: Rewrite mandelbrot benchmark.
librustc: Remove debug code; xfail-pretty reverse-complement.
auto merge of #5824 : bleibig/rust/debuginfo, r=brson

This adds debugging symbol generation for boxes, bare functions, vectors, and strings, along with a tests for boxes and vectors.

Note that gdb will see them as their actual compiled representation with the refcount, tydesc, etc. fields, so if `b` refers to box, `b->boxed` will refer to its value. Also, since you seem to use the [C struct hack](http://c-faq.com/struct/structhack.html) for dynamic vectors, you won't be able to print out the whole vector at once, only one element at a time by indexing specific elements.
core::rt: Declare large parts of the I/O API
core: Add rt::context for figuring out what runtime services are available

Conflicts:
	src/libcore/rt/sched/mod.rs
core: Don't use managed boxes in TaskBuilder
core: Wire up `spawn` to the new scheduler

It will check which scheduler it is running under and create the
correct type of task as appropriate. Most options aren't supported
but basic spawning works.