Modify test to expose issue #6492.
Fix opts_str.

opt_val doesn't not fail! for missing options.

Closes #6492
Fix comment.
No longer treat \ as a path separator on posix systems.
syntax: add 'in' keyword
syntax: add temporary 'foreach' keyword.
syntax: implement foreach .. in .. { .. } via desugaring.
rustc: fix a pp bug.
rustc: silence unused-var warning.
test: add testcases for external iterators using foreach.
auto merge of #8135 : dim-an/rust/master, r=pcwalton

Fix std::getopt::opts_str

Closes #6492 (std::getopt::opts_str fails for arguments other than the first one).
Unify the take glue functions for unique pointer types

These glue function just return void, no point in having a copy for each
type.
auto merge of #8138 : Dretch/rust/posix-path-push, r=pcwalton

\ is allowed inside file names on linux, for example my system has a file at:

`/run/udev/firmware-missing/intel-ucode\x2f06-3a-09`
auto merge of #8139 : brson/rust/rm-old-task-apis, r=pcwalton

This removes a bunch of options from the task builder interface that are irrelevant to the new scheduler and were generally unused anyway. It also bumps the stack size of new scheduler tasks so that there's enough room to run rustc and changes the interface to `Thread` to not implicitly join threads on destruction, but instead require an explicit, and mandatory, call to `join`.
auto merge of #8141 : graydon/rust/foreach-in-sketch, r=brson

This is a preliminary implementation of `for ... in ... { ...}` using a transitionary keyword `foreach`. Codesize seems to be a little bit down (10% or less non-opt) and otherwise it seems quite trivial to rewrite lambda-based loops to use it. Once we've rewritten the codebase away from lambda-based `for` we can retarget that word at the same production, snapshot, rewrite the keywords in one go, and expire `foreach`.

Feedback welcome. It's a desugaring-based approach which is arguably something we should have been doing for other constructs before. I apologize both for the laziness associated with doing it this way and with any sense that I'm bending rules I put in place previously concerning "never doing desugarings". I put the expansion in `expand.rs` and would be amenable to the argument that the code there needs better factoring / more helpers / to move to a submodule or helper function. It does seem to work at this point, though, and I gather we'd like to get the shift done relatively quickly.
auto merge of #8143 : brson/rust/change-dir-lock, r=luqmana
auto merge of #8145 : brson/rust/rttestfixes, r=pcwalton

Two commits here that fix test case dependencies on the old scheduler.
auto merge of #8146 : dotdash/rust/simple_take_glue, r=thestinger

These glue function just return void, no point in having a copy for each
type.
std: Remove PortSet. Not supported by new scheduler. Replace uses with SharedChan.