These design decisions seem to be sufficient to handle most traditional uses for priority queues. In particular, this approach offers a superset of the functionality offered by Java's built-in priority queue
implementation, which makes the same design decisions, but of course, is all imperative and yucky! (Also, it offers inferior asymptotics, heh.)
I'm really satisfied with the patch as-is, modulo maybe tinkering with the code style a little. I'm also working on an article for TMR on priority queues in Haskell, some of the different structures we considered, and particularly the new more-type-safe implementation I came up with for binomial heaps in the writing of this implementation.
Anyway, discuss, complain, et cetera.