Rafael Nadal reached his first Grand Slam semi-final since 2014 with a superb 6-4 7-6 (9-7) 6-4 victory over Canada's third seed Milos Raonic.