Begin experimenting with comparators

This adds a `Cmp` trait for comparators and uses it to parameterize `libcollections`'s `BinaryHeap`.
Following [cmp and ops reform](https://github.com/rust-lang/rfcs/blob/master/text/0439-cmp-ops-reform.md), I think that this should have two parameters (`Lhs` and `Rhs`, with `Rhs` defaulting to `Lhs`). This isn't very useful for `BinaryHeap`, but I expect it to be for `BTreeMap`.