C# Heap-based Priority Queue that I've used for a LOT of things :)