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
Implement SIMD arithmetics
Change the assert_eq message to be more verbose.

Closes #6221
fix test
Work around stage0 to remove '@' requirements from TLS
Fix a soundness problem with `get`
Remove all external requirements of `@` from TLS

Closes #6004
char_range_at perf work

Moves multibyte code to it's own function to make char_range_at
easier to inline, and faster for single and multibyte chars.

Benchmarked reading example.json 100 times, 1.18s before, 1.08s
after.
Optimize is_utf8

Manually unroll the multibyte loops, and optimize for the single
byte chars.
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
Add is_utf8 bench tests

Before:
is_utf8_ascii:          272.355162 ms
is_utf8_multibyte:      167.337334 ms

After:
is_utf8_ascii:          218.088049 ms
is_utf8_multibyte:      134.836722 ms
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