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