Begin experimenting with comparators

This adds a `Cmp` trait for comparators and uses it to parameterize `libcollections`'s `BinaryHeap`.
I considered this. One implication is that `Rev` can no longer just swap `lhs` and `rhs`. Instead, it will have to reverse the `Ordering` itself (conveniently, such a method already exists in the standard library).