Allow non-uppercase-statics by default

I think of this as a stylistic opinion which shouldn't necessarily be enforced
by default on all users of rust, but that's just my opinion.
Clean up various warnings throughout the codebase
Purge the last remnants of the old TLS api

Closes #3273
auto merge of #7751 : alexcrichton/rust/finish-tls, r=pcwalton

This changes the interface to `get`, and it also changes the keys to be static slices instead of static functions.

This allows the removal of the `unsafe` interface because while functions can monomorphize from different types to the same actual function, static slices cannot do this.

From at least what I can tell, we don't need to worry about LLVM coalescing these addresses. If we ever use the `unnamed_addr` it looks like there's cause for worry, but there doesn't appear to be any coalescing atm.