num: implement CheckedDiv
port util/common.rs from oldvisit to <V:Visitor> trait API.
Ported coherence.rs from oldvisit to <V:Visitor> trait API.
Ported rusti::utils from oldvisit to <V:Visitor> trait API.
Port entry.rs from oldvisit to <V:Visitor> trait API.
Port freevars.rs from oldvisit to <V:Visitor> trait.
Port kind.rs from oldvisit to <V:Visitor> trait API.
ported lang_items from oldvisit to <V:Visitor> trait.
Port check_loans.rs from oldvisit to <V:Visitor> trait API.
auto merge of #8459 : thestinger/rust/checked, r=graydon
auto merge of #8623 : pnkfelix/rust/fsk-visitor-vpar-defaults-step4, r=nmatsakis

Follow up to #8619 (step 3 of 5).

(See #8527, which was step 1 of 5, for the full outline.)

Part of #7081.
Make the iterator protocol more explicit

Document the fact that the iterator protocol only defines behavior up
until the first None is returned. After this point, iterators are free
to behave how they wish.

Add a new iterator adaptor Fuse<T> that modifies iterators to return
None forever if they returned None once.
Make Zip iterator short-circuit

Python's zip() short-circuits by not even querying its right-hand
iterator if the left-hand one is done. Match that behavior here by not
calling .next() on the right iterator if the left one returns None.