Manchester City produced a dramatic late fightback to reach their fourth successive FA Cup final with a remarkable 2-1 win over Championship Southampton.