chess: add Board.legal_moves()