core: Make intrinsics::init unsafe

as per #3920
core: Make intrinsics::forget unsafe, too
testsuite: Test that init and forget are both unsafe
librustc: Fix ICE in core-text resulting from dynamic borrowing. rs=blocking-servo
auto merge of #6366 : catamorphism/rust/issue-3920, r=catamorphism

r? @nikomatsakis as per #3920
auto merge of #6380 : pcwalton/rust/core-text-ice, r=pcwalton
auto merge of #6223 : alexcrichton/rust/issue-6183, r=pcwalton

Closes #6183.

The first commit changes the compiler's method of treating a `for` loop, and all the remaining commits are just dealing with the fallout.

The biggest fallout was the `IterBytes` trait, although it's really a whole lot nicer now because all of the `iter_bytes_XX` methods are just and-ed together. Sadly there was a huge amount of stuff that's `cfg(stage0)` gated, but whoever lands the next snapshot is going to have a lot of fun deleting all this code!
Implement util::swap without the '<->' operator
Stop using the '<->' operator
Remove the '<->' operator from the language
Fix tests with the swap operator