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).
As it turns out, this file is already using `core::prelude::*` as opposed to `std::prelude::*`.  Should that be the other way around?