Implement rewindable history
Dont allow user to select empty squares
Add knight moves