std: Change ProcessOptions struct to have an option of a ~ vector

This is a workaround for #8498
testsuite: Add xfailed test for #8498
std: Change either::{lefts, rights} to return an iterator
Update either::partition

Remove the only use of either::partition since it was better
accomplished with vector methods.

Update either::partition so that it sizes the vectors correctly before
it starts.
std: Replace map_vec, map_vec2, iter_vec2 in std::result

Replace these with three functions based on iterators: collect, fold,
and fold_. The mapping part is replaced by iterator .map(), so the part
that these functions do is to accumulate the final Result<,> value.

* `result::collect` gathers `Iterator<Result<V, U>>` to `Result<~[V], U>`
* `result::fold` folds `Iterator<Result<T, E>>` to `Result<V, E>`
* `result::fold_` folds `Iterator<Result<T, E>>` to `Result<(), E>`
rustc: Change ICE message to reflect that ::rt::backtrace doesn't exist
ptr: inline the Clone implementation
kinds: update documentation
update the iterator tutorial
tuple: remove obsolete ExtendedTupleOps

replaced by iterators (generic composable `map` and `zip` adaptors)
vec: rm obsolete zip and zip_slice

These are obsoleted by the generic iterator `zip` adaptor. Unlike
these, it does not clone the elements or allocate a new vector by
default.
iterator: cleanup
vec: rm redundant is_empty implementations
rm obsolete test
auto merge of #8503 : thestinger/rust/iterator, r=alexcrichton
testsuite: xfailed test cases
auto merge of #7917 : catamorphism/rust/resolve-and-testcases, r=catamorphism
auto merge of #8518 : catamorphism/rust/issue-8498-workaround, r=brson

r? @brson
auto merge of #8526 : blake2-ppc/rust/either-result, r=catamorphism

Retry of PR #8471

Replace the remaining functions marked for issue #8228 with similar functions that are iterator-based.

Change `either::{lefts, rights}` to be iterator-filtering instead of returning a vector.

Replace `map_vec`, `map_vec2`, `iter_vec2` in std::result with three functions:

* `result::collect` gathers `Iterator<Result<V, U>>` to `Result<~[V], U>`
* `result::fold` folds `Iterator<Result<T, E>>` to `Result<V, E>`
* `result::fold_` folds `Iterator<Result<T, E>>` to `Result<(), E>`
auto merge of #8530 : brson/rust/rt-backtrace, r=alexcrichton

The new scheduler didn't preserve this behavior.