Expand the deriving(ToStr) implementation
iterator: add a size_hint default method

also adds an implementation for the vector iterators
iterator: add a FromIterator trait

This is able to take advantage of the lower bound from the size hint.
auto merge of #7204 : alexcrichton/rust/deriving-to-string, r=pcwalton

Closes #7180 and #7179.

Before, the `deriving(ToStr)` attribute was essentially `fmt!("%?")`. This changes it to recursively invoke `to_str()` on fields instead of relying on `fmt!`-style things. This seems more natural to me and what should actually be expected.
vec: remove BaseIter implementation

I removed the `static-method-test.rs` test because it was heavily based
on `BaseIter` and there are plenty of other more complex uses of static
methods anyway.
auto merge of #7274 : thestinger/rust/size_hint, r=huonw

I ran into a weird lifetime bug blocking updating the `collect` method to use `FromIterator`, but everything here works fine.
Add rules for assert, fail, and deriving to vim syntax file. Also highlight the mod path in "use module;" properly.
Fix error messages in test cases, since fns/traits now pretty-print with a bounds list
Parse and typecheck (not kindcheck) bounds on trait paths.
Add tests for not-kind-checked trait bounds.
Check closure freevar kinds against destination environment bounds (#3569)
Add basic test cases for closure bounds. (#3569)
Allow ~fn:Copy() to be copied.
Check existential type contents against destination trait bounds.
Fix pretty-printing builtin bounds on closures and traits