Simple MinHeap implementation + heapSort

This prepares the ground for a better merge algorithm (I'll submit [another pull-request](https://github.com/ochafik/quiver-dart/compare/ochafik:heap...merge-heap?expand=1)) in `O(n * log(m))` instead of `O(n * m)`.

(where m is the number of iterables and n is the total number of items)
Cool! Is there any V8-Hydrogen-style representation / tool to check what Dart optimizes?