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.
rt: Use the correct global change_dir lock
test: Use a test extern in various foreign fn tests
test: Remove a test of the oldsched runtime api
Unify the take glue functions for unique pointer types

These glue function just return void, no point in having a copy for each
type.