Move core::run tests of process killing into standalone run-pass tests

These cause valgrind errors in subprocesses. I don't *think* these errors
lead to actual test failures but they are very confusing.
auto merge of #6228 : brson/rust/run-destroy, r=brson

These cause valgrind errors in subprocesses. I don't *think* these errors
lead to actual test failures but they are very confusing.
Implement a new protocol for `for` loops that's much more easily composable
core: Use the new `for` protocol
std: Use the new `for` protocol
syntax: Use the new `for` protocol
rustc: Use the new `for` protocol
rustpkg: Use the new `for` protocol
Fix deriving(IterBytes) to use the new for-loop protocol
test: Use the new `for` protocol