Begin experimenting with comparators

This adds a `Cmp` trait for comparators and uses it to parameterize `libcollections`'s `BinaryHeap`.
Yeah, the extra boilerplate involved is really painful. Unfortunately, I don't think anyone has solved this problem in any language - Haskell, which has had a lot more experience with type classes/traits, still suffers from this issue.