Replace priority queue code with implementation from hashsig

This takes the priority queue that I wrote for the hashsig code and makes a general purpose priority queue out of it as a replacement for the previous pqueue implementation. I only implemented the minimum number of APIs that seemed necessary for our purposes and I now keep the internals mostly as a `git_vector` because that was simpler.

Right now I have implemented a "fixed-size heap" option because that's what I was using internal to the hash signature calculation code, but since the hash signatures are actually heaps of 32-bit integers, I don't think it makes sense to use this pqueue implementation there. I'm probably going to drop the extra fields and the fixed size heap stuff completely (unless someone speaks up) and make it so that the priority queue APIs are just utility functions that sit directly on top of `git_vector` objects.