Add initial attempt at implementing BitOr for BTreeSet.

I am trying to add an implementation of `bitor` for `BTreeSet`. I think I am most of the way there, but I am going to need some guidance to take it all the way.

When I run `make check`, I get:

```
error: cannot move out of dereference of `&`-pointer
self.union(_rhs).map(|&i| i).collect::<BTreeSet<T>>()
                      ^~
```

I'd appreciate any nudges in the right direction. If I can figure this one out, I am sure I will be able to implement `bitand`, `bitxor`, and `sub` as well.

/cc @Gankro 
Clone is the trait that allows values to be deep-copied. You need to specify that `T` implements Clone, because after this operation there should be two logical copies of some values. For instance, if T was a Box<int>, just moving out of a reference would create two Boxes that point to the same location in heap. Not safe. Clone will duplicate the actual location in memory, making two independent boxes.

You can add the bound as follows:
```
impl<T: Ord + Clone> BitOr<BTreeSet<T>,BTreeSet<T>> for BTreeSet<T> {
```