Consume once fns when calling them (#2549).
Permit moving out of captured upvars in once fns. Close #2549.
Add tests for once functions (#2549).
Hide the once-move-out privilege for stack fns behind '-Z once-fns'
Oops, hide 'unless once fn' error message hint behind -Z once-fns too.
testsuite: Add test cases, some xfailed

Closes #5060
Closes #4446
Closes #5192
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
Great renaming: propagate throughout the rest of the codebase
Fix merge fallout
Warning cleanup