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
Fix LLVM bug affecting i1 switches emitted for nullable enum match.
Convert to C string inside WriteOutputFile
Choose target features
Consider nullability for equivalence of monomorphized fns.
Use nullable pointers to represent enums like Option<~T>.

See comments in adt.rs for details.
Add some tests for nullable-pointer enums
cell: public field is unsafe

use core::cell;

fn main() {
    let x = cell::Cell(Some(~"foo"));
    let y = x.value.get_ref().get_ref();
    do x.with_mut_ref |z| { *z = None; }
    println(*y) // boom!
}
auto merge of #6003 : thestinger/rust/cell, r=nikomatsakis

```rust
use core::cell;

fn main() {
    let x = cell::Cell(Some(~"foo"));
    let y = x.value.get_ref().get_ref();
    do x.with_mut_ref |z| { *z = None; }
    println(*y) // boom!
}
```
libcore: Add `is_absolute()` to paths. Closes #5851.
auto merge of #6001 : jld/rust/enum-nullable, r=pcwalton

Specifically: all enums with two variants, where one has zero size (and thus at most one inhabitant) and the other has a field where the null value would not be allowed (such as a safe pointer), are now represented by storing a null pointer in the field in question.

This is a generalization of representing `Option<~T>`, `Option<@T>`, and `Option<&T>` with nullable pointers, thus fixing Tony Hoare's “billion dollar mistake”.