rt: Make the C stack segment accessible to runtime users.
auto merge of #5887 : jdm/rust/stackbounds, r=brson

This is needed to allow GC to work in SpiderMonkey.
Fix LLVM bug affecting i1 switches emitted for nullable enum match.
libstd: denominator isn't quotient
libcore: Rand impls for tuples and ~/@ boxes
auto merge of #5994 : huonw/rust/rational-fail-message, r=thestinger

A pedantic correction; the quotient is the result of `a/b`, not `b`.
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
auto merge of #5995 : huonw/rust/core-rand-impls, r=pcwalton
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!
}
```
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”.
contract changes in mod.rs, eliminating boxed trait
parser comments only
refactor parse_fn_decl
syntax test cases now pass
adding parse_path
simplify, based on invariant that items_allowed != foreign_items_allowed
remove unnecessary function