Use purely an owned vector for storing TLS data
Change the elements in the task-local map to be actual key-value pairs
Change TLS to almost be able to contain owned types
Rename local_data methods/types for less keystrokes
Work around stage0 to remove '@' requirements from TLS
Fix a soundness problem with `get`
Remove all external requirements of `@` from TLS

Closes #6004
rustc: Add new graph library, based on code from region_infernece
Port region inference code to use new graph
Construct the graph only when it is needed to report errors.
Add simple control-flow-graph abstraction based on graph, currently unused
Silence various warnings
initial sketch of codegen mode for compiletest; doesn't measure / compare / ratchet the disassembly yet
wire up makefile to run codegen tests and add one to start
extra: simplify the bench stat loop, improve stability somewhat (?)
extra: add ToJson for TreeMap.
extra: factor ConsoleTestState methods into an impl, fix perf bug.

It was re-reading terminfo on each line of output.
extra: add metrics ratchet to test driver.
extra: add explicit ratchet-noise-percent option to benchmark ratchet, plus a few test breaking fixes.
auto merge of #7623 : graydon/rust/codegen-compiletests, r=pcwalton

This is some initial sketch-work for #7461 though it will depend on #7459 to be useful for anything. For the time being, just infrastructure.