Andy Murray reaches the French Open last 16 with a superb win over Juan Martin del Potro, but fellow Briton Kyle Edmund is out.