Steps in the right direction maybe? ChessHelp.testMoveForCheck() returns false too frequently and I can't work with moves that couldn't ever happen.

Also there is a bug where the pathIsClear() compares two identical squares, which causes problems