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)
Actually you can just include it in the while condition: while (i < length ~/ 2) {...