Cleaned up case related functions a bit
Made unsafely safe functions unsafe again, for safety
Added Ascii type
Added case functions to Ascii
Corrected history
Implement a lint mode to deal with unused 'mut' variables
core: remove unused 'mut' variables
std: remove unused 'mut' variables
syntax: remove unused 'mut' variables
rustc: remove unused 'mut' variables
Convert to C string inside WriteOutputFile
Choose target features
libcore: Add `is_absolute()` to paths. Closes #5851.
Moved ascii out of str
Removed deriving Ord, which allowed to remove the stage markers
Added missing assert, did some formating
auto merge of #5971 : pcwalton/rust/is-absolute, r=pcwalton

r? @jdm last commit
auto merge of #5966 : alexcrichton/rust/issue-3083, r=graydon

Closes #3083.

This takes a similar approach to #5797 where a set is present on the `tcx` of used mutable definitions. Everything is by default warned about, and analyses must explicitly add mutable definitions to this set so they're not warned about.

Most of this was pretty straightforward, although there was one caveat that I ran into when implementing it. Apparently when the old modes are used (or maybe `legacy_modes`, I'm not sure) some different code paths are taken to cause spurious warnings to be issued which shouldn't be issued. I'm not really sure how modes even worked, so I was having a lot of trouble tracking this down. I figured that because they're a legacy thing that I'd just de-mode the compiler so that the warnings wouldn't be a problem anymore (or at least for the compiler).

Other than that, the entire compiler compiles without warnings of unused mutable variables. To prevent bad warnings, #5965 should be landed (which in turn is waiting on #5963) before landing this. I figured I'd stick it out for review anyway though.
auto merge of #5980 : Kimundi/rust/ascii-encoding, r=thestinger

Added Ascii type to use for byte inputs that are known to contain Ascii only.
auto merge of #5996 : sanxiyn/rust/target-feature, r=graydon

Fix #1879.