Fix broken use of priority queue

Had to add a wrapper class for the priority queue things
Consolidate functions in Maze class

Consolidate some helper functions into the Maze class in preparation to
move to separate file
Add new insane maze
Move Maze into its own file

Some additional optimization work done.
On my computer:
maze6.txt
python 32.6s
pypy 5.2s