Got the solver working, added inter-node simplifier

Added DFS solver and functional checking for possible valid moves. Added
a puzzle simplifier to solve the puzzle as much as possible between DFS
nodes.