MoveProjector.java:
simulateMove() to filter if a move puts the King in checkmate

ChessBoard.java:
move and undo handling

BoardPanel.java:
Blake's filler debug logic to invert the board