Implement util::swap without the '<->' operator
Stop using the '<->' operator
Remove the '<->' operator from the language
Fix tests with the swap operator
auto merge of #6260 : alexcrichton/rust/issue-3466-no-swap, r=pcwalton

There may be a more efficient implementation of `core::util::swap_ptr`. The issue mentioned using `move_val_init`, but I couldn't figure out what that did, so I just used `copy_memory` a few times instead.

I'm not exactly the best at reading LLVM generated by rust, but this does appear to be optimized away just as expected (when possible).