syntax/ast_util: add `is_by_value_unop()`
Tell typeck that user unops are by value
Tell trans that user unops are by value
Tell expr_use_visitor that user unops are by value
Tell regionck that user unops are by value
libcore: convert unop traits to by value
libstd: convert `BitFlags` unops to by value
libstd: convert `Duration` unops to by value
Fix run pass tests
Test unop move semantics
Address Niko's comments
remove TreeMap, TreeSet, TrieMap, TrieSet, LruCache. deprecate EnumSet's std re-export
s/Tree/BTree
enumset fallout
auto merge of #19955 : Gankro/rust/kill-all-code, r=aturon

EnumSet lives on in libcollections so that librustc can still use it. This adds a direct dependency on libcollections to librustc and libserialize.

Should not be merged until https://github.com/rust-lang/rfcs/pull/509 is accepted.

All of these collections have already been moved to collect-rs where they will ideally be maintained and experimented with, or will be replaced by something better: https://github.com/Gankro/collect-rs/

[breaking-change]

r? @aturon @alexcrichton
auto merge of #19899 : japaric/rust/unops-by-value, r=nikomatsakis

- The following operator traits now take their argument by value: `Neg`, `Not`. This breaks all existing implementations of these traits.

- The unary operation `OP a` now "desugars" to `OpTrait::op_method(a)` and consumes its argument.

[breaking-change]

---

r? @nikomatsakis This PR is very similar to the binops-by-value PR
cc @aturon
Add tests for sub relationship on free/bound regions, revealing a bug.
Fix bug in higher-ranked code that would sometimes leak skolemized regions and/or cause incorrect results.
Cleanup type resolution to use type folding infrastructure and not
have such a silly over-engineered interface.
Delete tests that passed in error. We currently do not support a Clone
impl for fn pointer types including bound regions, unfortunately.