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).
So, when I tried using `vec![1, 2, 3, 4, 5]` as mentioned above, I got a whole bunch of errors like:
```
rustc: x86_64-unknown-linux-gnu/stage1/test/collectionstest-x86_64-unknown-linux-gnu
<std macros>:6:37: 6:50 error: mismatched types: expected `collections::vec::Vec<uint>`, found `vec::Vec<_>` (expected struct collections::vec::Vec, found struct vec::Vec)
<std macros>:6                 if !((*given_val == *expected_val) &&
                                                   ^~~~~~~~~~~~~
<std macros>:1:1: 14:2 note: in expansion of assert_eq!
/home/csouth3/rust/src/libcollections/trie/set.rs:772:9: 772:44 note: expansion site
<std macros>:7:40: 7:50 error: mismatched types: expected `vec::Vec<_>`, found `collections::vec::Vec<uint>` (expected struct vec::Vec, found struct collections::vec::Vec)
<std macros>:7                      (*expected_val == *given_val)) {
                                                      ^~~~~~~~~~
<std macros>:1:1: 14:2 note: in expansion of assert_eq!
/home/csouth3/rust/src/libcollections/trie/set.rs:772:9: 772:44 note: expansion site
<std macros>:6:37: 6:50 error: mismatched types: expected `collections::vec::Vec<uint>`, found `vec::Vec<_>` (expected struct collections::vec::Vec, found struct vec::Vec)
<std macros>:6                 if !((*given_val == *expected_val) &&
                                                   ^~~~~~~~~~~~~
<std macros>:1:1: 14:2 note: in expansion of assert_eq!
```
All of your other suggestions work very nicely.  Is there any other ways you would like this part done besides the above?