pub fn pop<A, F: Fn(&A, &A) -> bool>(arity: usize, f: F, xs: &mut [A])
Given a slice
xs which is already a heap, move the root to the end of the
slice and retract the heap to exclude it.
f(x,y) is whether
x must be nearer to the root than
xs being empty is an error.