Finish PriorityQueue remove()

An O(n) PriorityQueue remove() function is now implemented. It turns
out that storing indices of values in a HashMap is insufficient because
duplicate elements may be stored in a PriorityQueue but only 1 value
can be mapped to a single key in a HashMap. Yes, we could probably have
keys map to lists of values, but it could get complicated. Perhaps we
will find a simple way to handle this later.