Implement BitOps for TreeSet

Implement the `BitOr`, `BitAnd`, `BitXor`, and `Sub` traits from `std::ops` for TreeSet.  The behavior of these operator overloads is consistent with [RFC 235](https://github.com/rust-lang/rfcs/blob/master/text/0235-collections-conventions.md#combinations).

r? @Gankro
Cool, I'll definitely do that!  I'll update both this PR and the one for TrieSet to add the docs and stability messages.