std::rt: Use 2MB stacks

Seems to be around the minimum needed by rustc without split stacks
std::rt: Change Thread interface to require an explicit join

Makes it more obvious what's going on
std: Remove ManualThreads spawn mode
std: Remove ThreadPerTask spawn mode. Unimplemented
std: Remove PlatformThread spawn mode. Obsolete
std: Remove ExistingScheduler spawn mode. Unused
std: Remove CurrentScheduler spawn mode. Unused
No longer treat \ as a path separator on posix systems.
syntax: add 'in' keyword
syntax: add temporary 'foreach' keyword.
std: Remove get_task function. Unused
std: Remove foreign_stack_size spawn option. Irrelevant to future FFI changes
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 #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.