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)
I think I'd say that adding single values is constant time, and linear in the number of values being added.