added switch to use allow comparison via a Func or IComparer instance
refactored the PQ so that you can supply a Func to compare elements instead of implementing IComparer
refactored PQ to use a Func for element comparison, fixed unit tests