Update functions in Result and Either to be iterator-based

Replace the remaining functions marked for issue #8228 with similar functions that are iterator-based.

Remove `either::partition` since it's easy to use `.partitioned()` or `.partition()` on vectors for this.

Change `either::{lefts, rights}` to be iterator-filtering instead of returning a vector.

Replace `map_vec`, `map_vec2`, `iter_vec2` in std::result with two functions:

* `result::collect` gathers `Iterator<Result<V, U>>` to `Result<~[V], U>`
* `result::collect_unit` gathers `Iterator<Result<(), U>>` to `Result<(), U>`