Implement BitOps for TrieSet

Implement the `BitOr`, `BitAnd`, `BitXor`, and `Sub` traits from `std::ops` for TrieSet.  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).
Eugh that's weird. I think it's getting confused because it's mixing different "versions" of Vec across crate boundaries. If I had to guess, changing the `use std::prelude::*` to `use::core::prelude::*` at the top of the test module might fix it.