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
Refactored int/uint range code in preparation for change to range_rev semantics.

Also added unit tests of range code to test refactoring.  The
num-range-rev.rs test will need to be updated when the range_rev
semantics change.
Switch over to new range_rev semantics; fix #5270.
Add a lint to detect unnecessarily qualified names
Implement SIMD arithmetics
Change the assert_eq message to be more verbose.

Closes #6221
fix test
Add a compile-fail test for qualification lint
Work around stage0 to remove '@' requirements from TLS
Fix a soundness problem with `get`
Remove all external requirements of `@` from TLS

Closes #6004
Fix #5270: another test I did not update properly.
transmute: Avoid double copy for immediate values

Currently, immediate values are copied into an alloca only to have an
addressable storage so that it can be used with memcpy. Obviously we
can skip the memcpy in this case.
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