xfail-fast once fn run-pass tests
Change taskgroup key type to fn:Copy in prep for noncopyable stack closures.
Use more deriving(IterBytes) in libsyntax.
Use more deriving(IterBytes) in librustc.
'Borrow' stack closures rather than copying them (e.g., "|x|f(x)"), in prep for making them noncopyable.
Make librust satisfy noncopyable stack closures
Trade stack closure copyability for type soundness.
Add two tests for the case of the recurring closure.
auto merge of #7244 : bblum/rust/once, r=nikomatsakis

@graydon suggested that once closures not be part of the language for 1.0, but that they might be hidden behind a -Z compile flag as an "experimental feature" in case people decide they need them.

Regardless of whether ```-Z once-fns``` is set, this PR will parse the ```once``` keyword and will prevent closures labelled with it from being called more than once. It will also permit moving out of captured vars in heap closures, just to let the runtime writers stop using ```Cell``` sooner. Setting ```-Z once-fns``` only toggles whether the move-out-from-capture privilege is also given for stack closures.

r? @nikomatsakis
auto merge of #7363 : bblum/rust/soundness, r=nikomatsakis

The commit f9a5453 is meant to be a temporary hold-over. Whether or not there is added a way for the compiler to "implicitly borrow" stack closures in this way, there should be a codegen optimization that prevents having to traverse possibly-very-many function pointers to find the function you ultimately wanted to call. I tried to separate out the changes so this particular commit could be straight-up reverted if auto-borrowing happens in the future.

r? @nikomatsakis
auto merge of #7441 : catamorphism/rust/testcases_2013-06-27, r=catamorphism
Add missing argument to a debug! call in trans_arg_expr
Avoid extra casts for "self" arguments

"self" is always passed as an opaque box, so there's no point in using
the concrete self type when translating the argument. All it does it
causing the value to be casted back to an opaque box right away.
auto merge of #7442 : graydon/rust/clean-llvm-trigger, r=brson

This makes it possible for us to trigger the llvm-clean make-target by checking in a change that touches rustllvm/llvm-auto-clean-stamp. Most developers don't need to see or know about this, but when you push a change that "needs an LLVM rebuild", even if not otherwise obvious, this should give a mechanism to do it.
Great renaming: propagate throughout the rest of the codebase
Fix merge fallout
Warning cleanup
Removing a lot of usage of '&const'
Remove mutability from unique boxes in the AST
Fix handling of temp cleanups for the "self" argument

The code that tried to revoke the cleanup for the self argument tried
to use "llself" to do so, but the cleanup might actually be registered
with a different ValueRef due to e.g. casting. Currently, this is
worked around by early revocation of the cleanup for self in
trans_self_arg.

To handle this correctly, we have to put the ValueRef for the cleanup
into the MethodData, so trans_call_inner can use it to revoke the
cleanup when it's actually supposed to.