Remove `@mut Resolver`

Instead use &mut everywhere as much as possible and then reorganize lots of code
to get past the borrow checker.
std::vec: Use a valid value as lifetime dummy in iterator

The current implementation uses `&v[0]` for the lifetime struct field,
but that is a dangling pointer for iterators derived from zero-length
slices.

Example:

    let v: [int, ..0] = [];  println!("{:?}", v.iter())

    std::vec::VecIterator<,int>{ptr: (0x7f3768626100 as *()), end: (0x7f3768626100 as *()), lifetime: &139875951207128}

To replace this parameter, use a field of type `Option<&'self ()>`
that is simply initialized with `None`, but still allows the iterator to
have a lifetime parameter.
Visibility fixes
Register new snapshots
Suppress warning by removing unused import
auto merge of #9556 : alexcrichton/rust/less-at-mut, r=luqmana

Instead use &mut everywhere as much as possible and then reorganize lots of code
to get past the borrow checker.
auto merge of #9557 : blake2-ppc/rust/vec-lifetime-token, r=thestinger

std::vec: Use a valid value as lifetime dummy in iterator

The current implementation uses `&v[0]` for the lifetime struct field,
but that is a dangling pointer for iterators derived from zero-length
slices.

Example:

    let v: [int, ..0] = [];  println!("{:?}", v.iter())

    std::vec::VecIterator<,int>{ptr: (0x7f3768626100 as *()), end: (0x7f3768626100 as *()), lifetime: &139875951207128}

To replace this parameter, use a field of type `Option<&'self ()>`
that is simply initialized with `None`, but still allows the iterator to
have a lifetime parameter.
auto merge of #9559 : sfackler/rust/more-visibility, r=alexcrichton
auto merge of #9562 : alexcrichton/rust/snapshots, r=thestinger
auto merge of #9574 : FlaPer87/rust/suppress_warnings, r=metajack

Small change that suppresses a warning because of an unused import.