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
No particularly strong reason, I actually just pulled these numbers straight from the tests for union/intersection/{symmetric} difference for TrieSet.  Would you like me to dial them back a little?