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.
Fix incorrect strftime error handling in rust_localtime
Closes #8702.
Modernized a few type names in rustc and syntax
auto merge of #8911 : Kimundi/rust/master, r=huonw

Most notable: span -> Span
auto merge of #8276 : kballard/rust/iterator-protocol, r=cmr

r? @thestinger
auto merge of #8913 : poiru/rust/issue-8702, r=cmr

Closes #8702.
touch llvm clean trigger
Renamed syntax::ast::ident -> Ident
auto merge of #8920 : Kimundi/rust/master, r=thestinger
Fix #8898
turn off android ndk asm pass
repr: print functions as `fn()`
auto merge of #8928 : novalis/rust/fix-8898, r=thestinger

I think this fixes 8898.  I'm a bit unsure about how slices and owned pointers to vectors-of-unit already worked, but since they were already working, I didn't mess with them.
repr: add support for trait objects

Closes #8916
auto merge of #8931 : ILyoan/rust/turnoff_android_ndk_asm, r=thestinger

Now we don't need android ndk to generate unwind info for arm target thanks to LLVM upgrade.
This fix removes the ndk asm pass.
repr: handle tuple structs sanely

Closes #8919
switch __field__ hack to <unnamed_field>

avoids conflict with fields actually named `__field__`
auto merge of #8927 : thestinger/rust/repr, r=huonw