syntax/ast_util: add `is_by_value_binop()`
Tell typeck which binops are by value
Tell trans which binops are by value
Tell expr_use_visitor which binops are by value
Tell regionck which binops are by value
libcore: convert binop traits to by value
libcore: fix move semantics fallout
libcollections: Vec<T> + &[T]
libcollections: String + &str
libcollections: make `EnumSet` binops by value
libstd: convert `BitFlags` binops to by value
libstd: convert `Duration` binops to by value
libtime: convert `Timespec` binops to by value
libsyntax: convert `BytePos`/`CharPos` binops to by value
libsyntax: convert `LockstepIterSize` binops to by value
librustc: convert `TypeContents` binops to by value
librustdoc: convert `Counts` binops to by value
Test that binops consume their arguments
Fix run-pass tests
Fix compile-fail tests