Owl_utils_heapSourceType of a min heap.
``make cmp`` creates an empty min heap, using ``cmp`` as a comparison function.
``make_int ?initial_size cmp`` creates an empty integer heap, using ``cmp`` as a comparison function and pre-allocates a space of ``initial_size`` elements.
``make_float ?initial_size cmp`` creates an empty float heap, using ``cmp`` as a comparison function and pre-allocates a space of ``initial_size`` elements.
``push heap x`` pushes ``x`` into ``heap``. Time complexity is ``O(log(n))``, where n is the size of ``heap``.
``pop heap`` pops the minimal element from ``heap``. It raises an exception if the heap is empty. Time complexity is ``O(log(n))``, where n is the size of ``heap``.
``peek heap`` returns the value of the minimal element in ``heap`` but it does not remove the element from the heap. Raises an exception if the heap is empty. Time complexity is ``O(1)``.
``is_empty heap`` returns ``true`` if ``heap`` is empty, ``false`` otherwise.