A lot of work

Implemented:
-checking whether moves will undo previous moves in 2 scenarios
-refactored the solution to be easier to use

To do:
-heurisitic
-write up
-(maybe) UI input improvement (more forgiving)