Add priority queue for challenges

Uses a heap queue to prioritize challenges.