Structural identifiability of nonlinear systems: algorithms based on differential ideals