Use defrecord for algorithm state.
Using state destructuring on loop.
Factored out the calc-new-state function to clean up the main loop.
Bundled up goal, heuristic, and find-neighbors into a defrecord.