Add a DataStructures module with PriorityQueue and heap functions.

This is good to go, and everyone seems cool with it. See #2438.